第10章网络与数据库编程基础-java语言基础自考教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第10章网络与数据库编程基础-java语言基础自考教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 网络 数据库 编程 基础 java 语言 自考 教学 课件
- 资源描述:
-
1、第第1010章章 网络与数据库编程网络与数据库编程本章重点本章重点支持支持JAVAJAVA程序访问网上资源的类及其方法程序访问网上资源的类及其方法网络编程应用网络编程应用支持支持JavaJava程序与数据库连接的类及其方法程序与数据库连接的类及其方法支持支持JavaJava程序的程序的数据表查询、数据记录修改和插入的数据表查询、数据记录修改和插入的类及其方法类及其方法数据库编程应用数据库编程应用Java网络程序设计支持机制网络程序设计支持机制利用利用URLURL访问网络资源访问网络资源利用利用SocketSocket通信通信3Java网络程序设计支持机制网络程序设计支持机制支持网络通信的类在支
2、持网络通信的类在包中。包中。发送和接收消息需要使用发送和接收消息需要使用I/OI/O流,因此程序中也需要使用流,因此程序中也需要使用java.iojava.io包的类包的类InetAddressInetAddress类:包装类:包装IPIP地址地址URLURL类类,URLConnection,URLConnection类:访问网络资源类:访问网络资源Socket,ServerSocket Socket,ServerSocket:实现网络通信实现网络通信6利用利用URLURL访问网络资源访问网络资源(1)(1)创建一个创建一个URLURL对象对象 URL urlBaseURL urlBase =
3、new URL(“http:/www.new URL(“http:/com/”)/”);(2)(2)获得获得URLConnectionURLConnection对象,它表示和对象,它表示和URLURL之间的通信链接之间的通信链接 URLConnection tc=URLConnection tc=urlBaseurlBase.openConnection();.openConnection();(3)(3)打开到此打开到此 URL URL 引用的资源的通信链接(如果尚未建立这样的连接)。引用的资源的通信链接(如果尚未建立这样的连接)。tc.connect();tc.connect();(4)(
4、4)获得此链接的输入获得此链接的输入/输出流输出流 InputStream in InputStream in =tc.getInputStream();tc.getInputStream();OutputStream out OutputStream out =tc.getOutputStream();tc.getOutputStream();(5)(5)从输入流中读取数据从输入流中读取数据a a程序程序b b程序程序主机主机A A:172.18.29.100172.18.29.100主机主机B B:172.18.29.103172.18.29.103如何通信?如何通信?网络网络预备知识预备
5、知识-IP-IPIPIP地址地址主机在主机在InternetInternet上的标识上的标识 例如:例如:222.192.238.100222.192.238.100QQHTTPMSNftp主机主机A A:222.192.238.100222.192.238.100a程序只靠只靠IPIP地址,能地址,能跟跟QQQQ通信吗?通信吗?预备知识预备知识-端口端口 一台机器只通过一条链路连接到网络上,但一台机器一台机器只通过一条链路连接到网络上,但一台机器中往往有很多应用程序需要进行网络通信,如何区分中往往有很多应用程序需要进行网络通信,如何区分呢?这就要靠网络端口号(呢?这就要靠网络端口号(port
6、port)了。)了。端口号是一个标记机器的逻辑通信信道的正整数,端端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。口号不是物理实体。httpftpQQ21telnet端口端口23804000客户程序客户程序222.192.238.100222.192.238.100:40004000主机A:222.192.238.100222.192.238.100预备知识预备知识-端口端口端口号是用一个整数来表达的,其范围为端口号是用一个整数来表达的,其范围为0 06553565535,其中,其中0 010231023为系统所保留,专门给那些通用的服务,如为系统所保留,专门给那些通用的服务,
7、如httphttp服服务的端口号为务的端口号为8080,telnettelnet服务的端口号为服务的端口号为2323,ftpftp服务的端服务的端口为口为21.21.当我们编写通信程序时,应选择一个大于当我们编写通信程序时,应选择一个大于10231023的数作为端的数作为端口号,以免发生冲突。口号,以免发生冲突。客户客户/服务器模式服务器模式监听发送连接请求接受请求客户端(主叫)服务器端(被叫)连接建立开始通话结束通话12SocketSocket和和ServerSocketServerSocket类类套接字类(套接字类(SocketSocket)服务器套接字类(服务器套接字类(ServerSo
8、cketServerSocket)13服务器端的连接步骤服务器端的连接步骤(1)(1)创建创建ServerSocketServerSocket对象,为服务器对象绑定端口号,服务器端在这个端口对象,为服务器对象绑定端口号,服务器端在这个端口 待客户端的连接待客户端的连接,如果企图使用一个已经使用的端口,会引起如果企图使用一个已经使用的端口,会引起BindExceptionBindException ServerSocket ServerSocket serverserver=new ServerSocket(5555);new ServerSocket(5555);(2)(2)使用使用accep
9、t()accept()方法监听连接:方法监听连接:Socket socket=server.accept();/Socket socket=server.accept();/此语句会一直等待,直到一个客户此语句会一直等待,直到一个客户 /与该服务器端建立连接。与该服务器端建立连接。(3)InputStream in=socket.getInputStream();/(3)InputStream in=socket.getInputStream();/获得此端口的输入流获得此端口的输入流 OutputStream out=socket.getOutputStream()OutputStream
10、out=socket.getOutputStream();/获得此端口的输出流获得此端口的输出流(4)(4)利用输入输出流和客户端通信利用输入输出流和客户端通信(5)socket.close();/(5)socket.close();/关闭关闭 客户端的连接步骤客户端的连接步骤(1)(1)呼叫服务器端,创建一个呼叫服务器端,创建一个SocketSocket对象对象,构造函数的两个参数分别为服务器端的构造函数的两个参数分别为服务器端的IPIP地址地址以及端口号。客户端程序将会连接指定以及端口号。客户端程序将会连接指定IPIP地址主机上的指定端口,连接成功之后,便地址主机上的指定端口,连接成功之后
11、,便能产生客户端的能产生客户端的SocketSocket对象,用于和服务器端进行通信对象,用于和服务器端进行通信 Socket clientSocket=new Socket(“172.18.45.126,5555);Socket clientSocket=new Socket(“172.18.45.126,5555);(2)InputStream in=clientSocket.getInputStream();/(2)InputStream in=clientSocket.getInputStream();/获得此端口的输入流获得此端口的输入流 OutputStream out=clien
12、tSocket.getOutputStream()OutputStream out=clientSocket.getOutputStream();/获得此端口的输出流获得此端口的输出流(4)(4)利用输入输出流和服务器端通信利用输入输出流和服务器端通信(5)socket.close();/(5)socket.close();/关闭关闭 通信双方通信双方Socket的产生过程的产生过程服务器端程序:服务器端程序:ServerSocket server=newServerSocket(5555);ServerSocket server=newServerSocket(5555);Socket se
13、rverSocket=server.accept();Socket serverSocket=server.accept();客户端程序:客户端程序:Socket clientSocket=new Socket(“Socket clientSocket=new Socket(“服务器端服务器端IP,5555);IP,5555);呼叫clientSocketclientSocketserverSocketserverSocket接受clientSocket.getInputStream()clientSocket.getInputStream()clientSocket.getOutputStr
14、eam()clientSocket.getOutputStream()serverSocket.getInputStream()serverSocket.getInputStream()serverSocket.getOutputStream()serverSocket.getOutputStream()JDBCJDBCJDBC,JDBC,全称为全称为Java DataBase ConnectivityJava DataBase Connectivity,它是一个面它是一个面向对象的应用程序接口(向对象的应用程序接口(APIAPI),通过它可访问各类关系数通过它可访问各类关系数据库。据库。JD
15、BCJDBC也是也是javajava核心类库的一部分。核心类库的一部分。JDBCJDBC能做三件事:能做三件事:和数据库建立连接和数据库建立连接向数据库发送向数据库发送SQLSQL语句语句处理数据库的返回结果处理数据库的返回结果import java.sql.import java.sql.*;JavaJava数据库编程数据库编程-Java-Java程序与数据库连接程序与数据库连接JDBC-ODBCJDBC-ODBC桥接桥接DriverManagerDriverManagerJdbcOdbcDriverJdbcOdbcDrivertry try Class.forName(Class.forN
16、ame(“sun.jdbc.odbc.JdbcOdbcDriver”“sun.jdbc.odbc.JdbcOdbcDriver”););/加载驱动加载驱动System.out.println(JDBC-ODBCSystem.out.println(JDBC-ODBC的驱动程序注册成功的驱动程序注册成功););catch(ClassNotFoundException e)catch(ClassNotFoundException e)System.out.println(System.out.println(找不到找不到JDBCJDBC驱动程序驱动程序););try try StringStrin
17、g u url=“rl=“jdbc:odbc:mydbjdbc:odbc:mydb”;”;/mydb/mydb为为odbcodbc数据源名称数据源名称 /连接数据库,连接数据库,第二个参数为用户名,第三个参数为密码第二个参数为用户名,第三个参数为密码 Connection con=DriverManager.getConnectionConnection con=DriverManager.getConnection(url,(url,“”,“”);“”,“”);System.out.println(System.out.println(数据库连接成功数据库连接成功););catch(SQLE
18、xception e)catch(SQLException e)System.out.println(System.out.println(数据库连接不成功数据库连接不成功););用纯用纯JavaJava的的JDBCJDBC驱动程序实现数据库连接驱动程序实现数据库连接 Java Java 程序程序 JDBC JDBC 驱动驱动数据库数据库SQL SQL 命令命令 结果结果 DriverManagerDriverManager不同的数据库不同的数据库(sql server2000(sql server2000Sql server2005Sql server2005,OracleOracle,my
19、sqlmysqlSybaseSybase等等)驱动不同,由数据库驱动不同,由数据库厂商提供,厂商提供,DriverManagerDriverManager加载加载驱动的代码也有区别驱动的代码也有区别try try Class.forName(Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDrivercom.microsoft.jdbc.sqlserver.SQLServerDriver););System.out.println(SQL Server2000System.out.println(SQL Server2000的驱动程序注册
20、成功的驱动程序注册成功););catch(ClassNotFoundException e)catch(ClassNotFoundException e)System.out.println(System.out.println(找不到找不到JDBCJDBC驱动程序驱动程序););try try StringString u url=rl=jdbc:microsoft:sqlserver:/127.0.0.1:1433;databaseName=tempdbjdbc:microsoft:sqlserver:/127.0.0.1:1433;databaseName=tempdb;Connecti
21、on con=DriverManager.getConnectionConnection con=DriverManager.getConnection(url,(url,sa,123);sa,123);System.out.println(System.out.println(数据库连接成功数据库连接成功););catch(SQLException e)catch(SQLException e)System.out.println(System.out.println(数据库连接不成功数据库连接不成功););JDBC连接数据库的步骤如下连接数据库的步骤如下加载驱动程序加载驱动程序Class.
22、forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);创建指定数据库的创建指定数据库的URLURLStringString url=url=jdbc:microsoft:sqlserver:/jdbc:microsoft:sqlserver:/localhostlocalhost:1433;databaseName=tempdb;:1433;databaseName=tempdb;建立连接建立连接 Connection c
23、on=DriverManager.getConnectionConnection con=DriverManager.getConnection(url,(url,sa,sa,123);123);java.sql包中几个重要的类和接口包中几个重要的类和接口DriverManagerDriverManager类类处理驱动程序加载和建立新数据库连接处理驱动程序加载和建立新数据库连接Connection con=DriverManager.getConnectionConnection con=DriverManager.getConnection(url,(url,sa,123);sa,123);
24、ConnectionConnection类类表示数据库连接的对象表示数据库连接的对象Statement stmt=con.createStatement();Statement stmt=con.createStatement();StatementStatement类类在指定连接中处理在指定连接中处理SQLSQL语句的类语句的类ResultSet rs=stmt.executeQuery(“select ResultSet rs=stmt.executeQuery(“select*from student from student”););ResultSetResultSet类类由查询结果构
25、成的表由查询结果构成的表ResultSetClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);String url=jdbc:odbc:mydb;/mydbString url=jdbc:odbc:mydb;/mydb为数据源名称为数据源名称 Connection con Connection con=DriverManager.getConnection(url,);=DriverManager.getConnection(url,);Statement stmt=co
展开阅读全文