




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络与数据库编程,2,10.1网络基础知识,在讲述如何进行网络程序开发之前,先讲述一些有关网络的基础知识。为了使两台计算机之间能够通信,必须为这两台电脑建立一个网络,将这两台计算机进行连接,把其中一台用作服务器,另一台作客户机。那什么是服务器?什么又是客户机?服务器就是能够提供信息的计算机或程序。客户机是指请求信息的计算机或程序。有的时候很难区分服务器和客户机,因为很多信息都是互相请求、互相提供信息的。(具体内容请参照本书),3,10.2TCP与UDP,TCP(TransmissionControlProtocol)就是传输控制协议,其和IP协议一起使用。一般会将两者合在一起,称TCP/IP。TCP协议负责数据或文件的分组与重组,而IP协议负责发送和接收数据包。数据或文件在网络上传输的时候,会被分成许多块,称之为包。UDP(UserDatagramProtocol)就是数据包协议,它也跟IP协议一起使用。与TCP协议相比较有很多类似的地方。但是,它不对连接状态与数据丢失作检查,只是保证数据发出去了,例如,平时上网所使用的电子邮件或者聊天时的QQ、MSN等。它们都可以非在线发消息,而这一点与TCP不同。TCP需要对对方是否收到以及数据的完整性作检查。,4,10.3端口与套接字,什么是端口,什么是套接字?下面将围绕这两个概念进行讲述。网络程序设计中的端口(port)并非真实物理存在的,而是一个假想的连接器。计算机提供了很多种服务,例如Http、Ftp、Dns等等。那么客户机必须明确的直到自己要连接的是服务器上哪一个服务,是Http、Ftp或者是Dns。为此就引入了一个端口的概念。端口被规定为一个在065535之间的整数。Http服务一般使用80端口,Ftp使用的是21端口,那么客户必须通过80端口才能连接到服务器的Http服务,而通过21端口,才能连接到服务器的Ftp服务器上。(具体内容请参照本书),5,10.4TCP程序设计基础,Java中的TCP网络程序设计是指利用Socket类,编写通信程序。TCP程序设计的一个过程是:服务器的套接字等待客户机连接请求,并创建新的套接字,使其与客户机的套接字连接,而本身继续等待其他客户机的连接请求。,6,10.4.1如何设计TCP的程序,下面看看几个与TCP程序设计有关的类。1与IP相关的InetAddress类应用2服务器套接字应用3套接字实现,7,10.4.2一个简单的例子,下面演示一个Socket类和ServerSocket类的应用实例。(具体内容请参照本书),8,10.6如何设计网络程序,上面一节中讲述了如何设计TCP程序和UDP程序,本节主要讲述如何将网络编程,应用到实际工作的开发中去。,9,10.6.1单向通讯综合实例,下面举一个单向通信的实例。这个实例用来实现客户机向服务器发送字符串功能。由于只要求客户机向服务器发送消息,不用服务器向客户机发送消息,所以称为单向通信。客户机套接字和服务器套接字连接成功后,客户机会通过输出流发送数据,而服务器会使用输入流接收数据,下面是具体的实例代码。(具体内容请参照本书),10,10.6.2双向通讯综合实例,上节介绍了客户机向服务器发送数据的单向通信,本节将介绍服务器和客户机相互发送数据的双向通信,其程序代码在上一小节的代码基础上有所改变,读者可以比较两者的区别。(具体内容请参照本书),11,数据库访问技术简介,客户机/服务器应用程序,数据库编程,ODBC,JDBC,两个常用的API,数据库,执行SQL语句,检索查询结果,12,数据库,ODBC,客户机/服务器GUI应用程序,ODBC(开放式数据库连接)(Microsoft提供),插入,删除,修改,应用程序编程接口,查询,13,JDBC,JDBC(Java数据库连接)(sun公司提供),Java应用程序编程接口,Java应用程序,数据库,插入,修改,删除,查询,14,JDBC驱动程序的类型,JDBC驱动程序的类型,JDBC-ODBC桥驱动程序及ODBC驱动程序,本地API部分Java驱动程序,JDBC-Net纯Java驱动程序,本地协议纯Java驱动程序,15,JDBC体系结构2-1,Java程序,JDBC驱动程序,数据库,SQL命令,结果,16,JDBC体系结构2-2,应用层,Driver,Statement,ResultSet,Connection,各接口,驱动层,17,java.sql包3-1,18,java.sql包3-2,19,java.sql包3-3,SQLException,/*fooBar*/publicvoidfoobar()throwsSQLExceptionthrownewSQLException(“刚引发了一个SQLException”);,tryfooBar();catch(SQLExceptionex)System.out.println(“已捕获一个SQLException异常!”);System.out.println(“消息:“+ex.getMessage();System.out.println(“错误代码:“+ex.getErrorCode();,调用fooBar,20,JDBC程序访问数据库的步骤2-1,开始,导入java.sql包,加载并注册驱动程序,创建一个Connection对象,创建一个Statement对象,执行语句,关闭ResultSet对象,关闭Statement对象,关闭连接,结束,使用ResultSet对象,21,Friends表的结构,JDBC程序访问数据库的步骤2-2,它演示访问数据库的各个步骤在执行示例1中的程序之前,SQLServer中应该存在一个名为friends的表,演示:示例1,/*2005AptechLimited*版权所有*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/*这个类演示访问数据库需遵循的各个步骤.*version1.0,2005年8月26日*authorBen*/classJdbctest/*构造方法*/protectedJdbctest(),/*这是main方法.*/publicstaticvoidmain(Stringargs)tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundExceptionce)System.out.println(ce);tryStringurl=jdbc:odbc:test;Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();ResultSetrs=s.executeQuery(select*fromfriends);while(rs.next()System.out.print(rs.getString(1)+t);System.out.print(rs.getString(2)+t);System.out.print(rs.getInt(3)+t);System.out.print(rs.getDate(4)+t);System.out.println();rs.close();s.close();con.close();catch(SQLExceptionce)System.out.println(ce);,22,JDBC查询2-1,SQL查询字符串,executeQuery()方法,作为参数传递,ResultSet,返回查询数据,SELECTname,email,phoneFROMcolleagues;,使用SQL语句,查询可编写为:,Stringstr=SELECTemp_id,lname,fnameFROMcolleagues;Statementstmt=con.createStatement();ResultSetrset=stmt.executeQuery(str);,使用JDBC编写此查询,则代码为:,Statement接口,23,JDBC查询2-2,它演示SQL中sum()方法的用法,演示:示例2,/*Jdbctest2*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/*这个类演示SQL中sum()方法的用法*version1.0,2005年8月26日*authorBen*/classJdbctest2/*构造方法*/protectedJdbctest2(),/*这是main方法*/publicstaticvoidmain(Stringargs)tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundExceptionce)System.out.println(ce);tryStringurl=jdbc:odbc:test;Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();ResultSetrs=s.executeQuery(selecthiredate,sum(salary)fromfriendsgroupbyhiredate);while(rs.next()System.out.print(rs.getDate(1)+t);System.out.print(rs.getInt(2)+t);System.out.println();rs.close;s.close();con.close();catch(SQLExceptionce)System.out.println(ce);,24,演示:示例3,它演示SQL中INSERT语句的用法,/*Jdbctest3*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/*这个类演示INSERT语句的用法.*version1.0,2005年8月26日*authorBen*/classJdbctest3/*构造方法*/protectedJdbctest3(),JDBC插入数据实现,/*这是main方法*/publicstaticvoidmain(Stringargs)tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundExceptionce)System.out.println(ce);tryStringurl=jdbc:odbc:test;Stringstr=INSERTINTO“+friends(name,address,salary)“+VALUES(朱八,深圳,25690);Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();introwcount=s.executeUpdate(str);Stringstr1=selectname,sum(salary)“+fromfriends+groupbyname;,ResultSetrs=s.executeQuery(str1);while(rs.next()System.out.print(rs.getString(1)+t);System.out.print(rs.getInt(2)+t);System.out.println();rs.close();s.close();con.close();catch(SQLExceptionce)System.out.println(ce);,25,JDBC删除和修改实现,它演示SQL中各种命令的用法,演示:示例4,/*Jdbc2*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;/*这这个类演示SQL中命令的用法.*version1.0,2005年8月26日*authorBen*/classJdbc2/*构造方法.*/protectedJdbc2(),publicstaticvoidmain(Stringargs)Connectioncon;Statementstmt;Stringurl;Stringsql;tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundExceptionce)System.out.println(ce);tryurl=jdbc:odbc:test;con=DriverManager.getConnection(url);sql=Deletefromfriendswherertrim(name)like张三;System.out.println();stmt=con.createStatement();stmt.executeUpdate(sql);System.out.println(张三的记录已删除“);stmt.close();con.close();,con=DriverManager.getConnection(url);sql=Updatefriendssetaddress=青岛where“+rtrim(name)like李四;System.out.println();stmt=con.createStatement();stmt.executeUpdate(sql);stmt.close();con.close();System.out.println(李四的记录已更新);catch(SQLExceptionce)System.out.println(ce);,26,PreparedStatement接口3-1,PreparedStatement接口(预编译的SQL语句),PreparedStatement用于提高运行时效率,执行PreparedStatement对象比执行Statement对象快,Statement接口,27,PreparedStatement接口3-2,它演示了PreparedStatement的用法,演示:示例5,/*CourseAppl*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;importjava.sql.PreparedStatement;/*这个类演示SQL中PreparedStatement的用法*/classCourseApplprivateConnectioncon;privateStringurl;privateStringserverName;privateStringportNumber;privateStringdatabaseName;privateStringuserName;privateStringpassword;privateStringsql;,CourseAppl()url=jdbc:microsoft:sqlserver:/;serverName=“localhost;portNumber=1433;databaseName=“test;userName=“sa;password=“sa;privateStringgetConnectionUrl()returnurl+serverName+:+portNumber+;databaseName=+databaseName+;privatejava.sql.ConnectiongetConnection()tryClass.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);con=DriverManager.getConnection(getConnectionUrl(),userName,password);if(con!=null)System.out.println(连接成功!);catch(Exceptione)e.printStackTrace();System.out.println(getConnection()内的错误跟踪:+e.getMessage();returncon;,publicvoiddisplay()trycon=getConnection();PreparedStatementpstmt=con.prepareStatement(UPDATEfriendsSETsalary=?WHEREnamelike?);pstmt.setInt(1,10000);pstmt.setString(2,李四);pstmt.executeUpdate();System.out.println(“记录已更新!);Statements=con.createStatement();Stringsql=SELECT*FROMfriends;ResultSetrs=s.executeQuery(sql);while(rs.next()System.out.println();System.out.print(rs.getInt(1)+);System.out.println(rs.getInt(5);catch(SQLExceptionce)System.out.println(ce);publicstaticvoidmain(Stringargs)CourseApplretObj=newCourseAppl();retObj.display();,28,PreparedStatement接口3-3,它演示在基于条件的SQL查询中如何使用PreparedStatement,其中条件在IN参数中给出,演示:示例6,importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.PreparedStatement;/*这个类演示在基于条件的SQL查询中使用PreparedStatement*/classRetrieveRecordsprivateConnectioncon;privateStringurl;privateStringserverName,portNumber,databaseName,userName;privateStringsql;RetrieveRecords()url=jdbc:microsoft:sqlserver:/;serverName=“localhost;portNumber=1433;databaseName=“test;userName=“sa;password=“sa;,privateStringgetConnectionUrl()returnurl+serverName+:+portNumber+;databaseName=+databaseName+;privatejava.sql.ConnectiongetConnection()tryClass.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);con=DriverManager.getConnection(getConnectionUrl(),userName,password);if(con!=null)System.out.println(连接成功!);catch(Exceptione)e.printStackTrace();System.out.println(“getConnection()内的错误跟踪:+e.getMessage();returncon;,publicvoiddisplay()trycon=getConnection();sql=select*fromFriendswhereSalary?;PreparedStatementpstmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);pstmt.setInt(1,5000);ResultSetrs=pstmt.executeQuery();while(rs.next()System.out.print(rs.getString(1)+t);System.out.print(rs.getString(2)+t);System.out.print(rs.getInt(3)+t);System.out.print(rs.getDate(4)+t);System.out.print(rs.getInt(5)+t);System.out.println();rs.close();pstmt.close();con.close();catch(SQLExceptionce)System.out.println(ce);/*这是main方法*/publicstaticvoidmain(Stringargs)RetrieveRecordsretRec=newRetrieveRecords();retRec.display();,29,使用结果集3-1,ResultSet对象完全依赖于Statement对象和Connection对象每次执行SQL语句时,都会用新的结果重写结果集当相关的Statement关闭时,ResultSet对象会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 众包平台定价策略的优化方案-洞察及研究
- 微生物发酵食品创新-洞察及研究
- 2025年生物医药行业中试生产基地建设可行性产业竞争力分析报告
- 数字孪生架构优化-洞察及研究
- 小区Wi-Fi网络智能覆盖方案创新创业项目商业计划书
- 奶牛养殖金融服务创新创业项目商业计划书
- 海洋渔业资源评估与监测创新创业项目商业计划书
- 康复辅助器具创新创业项目商业计划书
- 小白菜文化艺术展览创新创业项目商业计划书
- 政务公证服务系统创新创业项目商业计划书
- 微创祛除腋臭术后护理
- 地产直播 培训课件
- 中医肺与大肠教学讲课件
- GB/T 45701-2025校园配餐服务企业管理指南
- 人教版一年级数学上册数学游戏自测卷(含答案)
- 煤矿关联交易管理制度
- 兵团职工面试试题及答案
- 矿业公司股权转让与资源开发合作协议
- 司马懿的课件
- 氟化工艺安全操作课件
- 工程论文写作教学课件
评论
0/150
提交评论