收藏 分销(赏)

14Java网络与数据库编程基础(ppt-课件).pptx

上传人:二*** 文档编号:5456121 上传时间:2024-11-06 格式:PPTX 页数:59 大小:440.70KB
下载 相关 举报
14Java网络与数据库编程基础(ppt-课件).pptx_第1页
第1页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、Java网络与数据库编程网络与数据库编程基础基础Java网络编程之网络编程之IP地址和地址和InetAddress类类难点:网络套接字、客户机端与服务器端实现通信的应用程序。TCP/IP协议和协议和IP地址地址为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TCP/IP协议,它是Internet中各方所遵循的公共协议.TCP(TransportControlProtocol)是一种传输控制协议,IP(InternetProtocol)是一种网际协议,TCP/IP代表这两个协议的。TCP/IP分为四个层次:网络接口层:负责接收和发送物理帧;网络层:负责相邻节点之间的通信;传输层:负

2、责起点到终点的通信;应用层:提供诸如文件传输、电子邮件等应用程序。TCP/IP协议是一个协议族,由一组协议组成,主要包含以下更具体的协议:Telnet(远程登录):允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。FTP(FileTransferprotocol,文件传输协议):允许用户将远程主机上的文件复制到自己的计算机上。SMTP(simpleMailTransferProtocol,简单邮件传输协议):用于传输电子邮件。NFS(NetworkfileServer,网络文件服务器):使多台计算机透明地访问彼此的目录。HTTP:一种超文本传输协议,它是基于TC

3、P/IP协议的,是WWW浏览器和服务器之间应用层的通信协议。HTTP是一种通用、无状态、面向对象的协议。HTTP会话(事务)包括四个步骤:连接(Connection)、请求(Request)、应答(Response)和关闭(Close)。IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分A、B、C、D、E五类,常用的是A、B、C三类:A(1.0.0.0-126.255.255.255):0,7位网络号,后24位为主机号;B(128.0.0.0-191.255.255.255):10,14位网络号,后16位为主机号;C(192.0.0.0-223.25

4、5.255.255):110,21位网络号,后8位为主机号;D(224.0.0.0-239.255.255.255):1110,28位多点广播组标号;E(240.0.0.0-254.255.255.255):1111,保留试验使用。通常,IP地址用四段十进制数表示(8位一段)。例如:116.255.226.187或用文字域名表示。例如:在因特网上,域名服务器(DomainNameServer,DNS)执行文字名称到二进制网络地址的映射。InetAddress类类J包中有InetAddress类的定义,InetAddress类的对象用于IP地址和域名,该类提供以下方法:getByName(Str

5、ings):获得一个InetAddress类的对象,该对象中含有主机的IP地址和域名,该对象用如下格式表示它包含的信息: URL(Strings)其中,s指出网络中的一个资源。利用URL对象访问网上资源的方法是:先创建URL对象,如以下代码所示:URLmyURL;try myURL=newURL(“http:/:80/”);catch(MalformedURLExceptione)System.out.println(“有错的URL:”+url+e);因创建URL对象可能会产生MalformedURLException异常。所以,创建URL对象的代码应出现在trycatch语句块中,以便能捕捉

6、网址错误异常。URLConnection类类要接收和发关信息还要用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。以下是示意获得URLConnection对象的代码。URLmu=newURL(“http:/ URLConnectionmuC=mu.openConnection();/获得URLConnection对象上述代码说明,先要创建一个URL对象,然后利用URL对象的openConnection()方法,从系统获得一个URLConnection对象。程序有了URLConnection对象后,就可使用URLConnecti

7、on类提供的以下方法获得流对象和实现网络连接:getOutputStream():获得向远程主机发送信息的OutputStream流对象;getInputStream():获得从远程主机获取信息的InputStream流对象。有了网络连接的输入和输出流,程序就可实现远程通信;connect():设置网络连接。信息的发送和信息的发送和接收接收发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。Java 套接字套接字(Socket)网络应用模式主要有:主机/终端模式:集中计算,集中管理;客户机/服务器(Client/Server,简称C/S)模式:分

8、布计算,分布管理;浏览器/服务器模式:利用Internet跨平台。www(万维网)就是建立在客户机/服务器模式上,以HTML语言和HTTP协议为基础,能够提供各种Internet服务的信息浏览系统。网络信息放在主机的不同位置,www服务器利用超文本链路链接各项信息。www客户机(浏览器Brower)负责与服务器建立联系,向服务器发送请求,处理HTML超媒体,提供图形用户界面(GUI),显示信息等。在客户机/服务器工作模式中,在Server端,要准备接受多个Client端计算机的通信。为此,除用IP地址标识Internet上的计算机之外,另还引入端口号,用端口号标识正在Server端后台服务的线

9、程。端口号与IP地址的组合称为网络套接字(socket)。Java语言在实现C/S模式中,套接字分为两类:在Server端,ServerSocket类支持底层的网络通信;在Client端,Socket类支持网络的底层通信。Server机通过端口(总线I/O地址)提供面向Client机的服务;Server机在它的几个不同端口分别同时提供几种不同的服务。Client接入Server的某一端口,通过这个端口提请Server机为其服务。规定:端口号01023供系统专用。例如,HTTP协议在端口80,telnet协议在端口23。端口102465535供应用程序使用。当Client程序和Server程序需

10、要通信时,可以用Socket类建立套接字连接。套接字连接可想象为一个电话呼叫:最初是Client程序建立呼叫,Server程序监听;呼叫完成后,任何一方都可以随时讲话。双方实现通信有流式socket和数据报式socket两种可选方式:流式socket是有连接的通信,即TCP(TransmissionControlProtocol):每次通信前建立连接,通信结束后断开连接。特点是可以保证传输的正确性、可靠性。数据报式socket是无连接的通信,即UDP(UserDatagramProtocol):将欲传输的数据分成 小包,直接上网发送。无需建立连接和拆除连接,速度快,但无可靠保证。流式socke

11、t在Client程序和Server程序间建立通信的通道。每个socket可以进行读和写两种操作。对于任一端,与对方的通信会话过程是:建立socket连接,获得输入/输出流,读数据/写数据,通信完成后关闭socket(拆除连接)。利用socket的构造方法,可以在客户端建立到服务器的套接字对象:Socket(Stringhost,intport):host是服务器的IP地址,port是端口号,这些是预先约定的。例如,代码:trySocketmySocket=newSocket(“http:/”,1860);catch(IOExceptione)然后,用getInputStream()方法获得输入

12、流,用这个输入流读取服务器放入“线路”的信息;用getOutputStream()方法获得输出流,用这个输出流将信息写入“线路”。利用ServerSocket的构造方法可以在服务器建立接受客户套接字的服务器套接字对象:ServerSocket(intport):指定端口号,创建一个ServerSocket对象。端口号port要与客户呼叫的端口号相同。为此,用以下形式代码:tryServerSocketserverSocket=newServerSocket(1860);catch(IOExceptione)服务器端程序在指定的端口监听,当收到Client程序发出的服务请求时,创建一个套接字对象

13、与该端口对应的Client程序通信。例如,执行上述建立服务器套接字对象的代码,确立了对象serverSocket后,就可能它使用accept()方法,得到Socket对象,接收Client程序来自套接字mySocket的信息。如以下代码所示:trySocketsc=serverSocket.accept();/ac是一个Socket对象 catch(IOExceptione)要撤销服务,可以关闭Socket对象sc:sc.close();C/S模式中的Client端应用程序。这是一个Client端的流式Socket通信的简单实例,代码说明Client端程序的编写方法。例中,Client程序向服

14、务器主机的端口4441提出请求,连接建立后完成对服务器的读写。与例10.3Client端应用程序对应的Server端应用程序。程序在4441端口监听,当检测到有客户机请求时,产生一个内为“客户,你好,我是服务器”的字符串输出到客户端。Java程序与数据库程序与数据库连接连接一个网络关系数据库应用系统是一个三层次结构。客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信;数据库服务程序通过SQL命令与数据库管理系统通信。Java程序与数据库连接方法有两种。一种是使用JDBC-ODBC桥接器与数据库连接,一种是用纯Java的JDBC驱动程序实现与数据库连接。使用使用JD

15、BC-ODBC 桥接器与数据库桥接器与数据库连连接接Java程序使用JDBC-ODBC桥接器与数据库连接,Java程序与数据库通信的过程是:先由数据库应用程序向ODBC驱动管理器发出API调用,ODBC驱动管理器将这个调用转换成向数据库管理系统的ODBC驱动程序调用,数据库管理系统又将这个调用转换成对操作系统的数据输入/输出调用。最后,操作系统从数据库中得到实际数据逐级返回。数据库编程首先要设置数据源,在ODBC中设置数据源的步骤如下:打开Windows控制面板中的管理工具。对于windowsXP:选择“性能维护”“管理工具”“数据源(ODBC)”;对于windows2000:选择“管理工具”

16、“数据源”。打开“数据源”。出现ODBC数据源管理器对话框,显示现有的数据源名称。选择“用户DSN”,单击“添加”按钮,出现安装数据源驱动程序对话框。Access(*.mdb)数据源,单击“完成”按钮,出现“创建数据源对话框,键入需要创建的数据源名,并为创建的数据源选择一个数据库表。单击数据库区域的“选择”按钮,选择需要的数据库表。当需要为数据源授权访问级别时,单击“高级”按钮。设置登录名和密码后,单击“确定”按钮,完成Access数据库在ODBC管理器中的配置。如果还没有数据库表,则需创建一个数据库表。数据源就是数据库,在设定了数据源的基础上,Java程序要访问数据库表,还要建立JDBC-O

17、DBC桥接器,让程序与数据库连接。以后,程序就可向数据库发送SQL语句,处理数据库返回的结果。Java数据库连接JDBC(JavaDataBaseConnectivity)由一组用Java语言编写的类和接口组成,JDBC是Java程序与数据库连接API。它能做以下三件事情:与某个数据库建立连接、向数据库发送SQL语句和处理数据库返回的结果。调用类方法Class.forName(Strings)能建立JDBC-ODBC桥接器。例如,代码:try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);catch(Exceptione)为Java程序加载了驱动程

18、序。用纯用纯Java的的JDBC驱动程序实现与数据驱动程序实现与数据库库连接连接Java程序也可以用纯Java的JDBC驱动程序实现与数据库连接。这种方法应用较广泛,但是需要下载相应的驱动程序包,因为不同的数据库的连接代码可能不同,连接不同的数据库,加载的驱动程序也可能不同。例如,连接SQLServer的驱动程序在网站下载,有3个包:msbase.jar,mssqlserver.jar和msutil.jar,并要求将这3个包放在jdkjrelibext目录下,或在CLASSPATH中设置其放置位置。使用纯Java的JDBC驱动程序实现与数据库连接的过程如下:加载驱动程序。有两种加载驱动程序的方

19、式:一各是将驱动程序添加到java.lang.System的属性jdbc.drivers中。这是一个DriverManager类加载驱动程序类名的列表,表元用冒号分隔。另一种方式是从相关的网站下载驱动程序后,在程序中利用Class.forName()方法加载指定的驱动程序。例如:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);创建指定数据库的URL。数据库的URL对象类似网络的统一资源定位符,其格式是:jdbc:subProtocol:subName:/hostname:port:Databasename=XXX其中,

20、subprotocol是某种驱动程序支持的数据库连接机制;subName是当前连接机制下的具体名称;hostName是主机名;port是相应的连接端口;DatabaseName是要连接的数据库名称。例如,以下代码可以是一个数据库的URL:jdbc:Microsoft:sqlserver:/localhost:1433;Databasename=ksinfo该数据库的URL说明利用miscrosoft提供的机制,用sqlserve驱动,通过1433端口访问本机上的ksInfo数据库。建立连接。驱动程序管理器(DriverManager)的方法getConnection()建立连接。java数据库

21、访问类和数据库访问类和接口接口DriverManager类类DriverManager类处理驱动程序的加载和建立新数据库连接。DriverManager是java.sql包中用于管理数据库驱动程序的类。通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象:staticConnectiongetConnection(Stringurl,Stringusername,Stringpassword)指定数据的URL用户名和密码创建数据库连接对象。url的语法格式是:jdbc:。Connection类类Conne

22、ction类是java.sql包中用于处理与特定数据库连接的类。Connection对象是用来表示数据库连接的对象,Java程序对数据库的操作都在这种对象上进行。Connection类的主要方法有:StatementcreateStatement():创建一个Statement对象。StatementcreateStatement(intresultSetType,intresultSetConcurrency):创建一个Statement对象,生成具有特定类型的结果集。voidcommit():提交对数据库的改动并释放当前持有的数据库的锁。voidrollback():回滚当前事务中的所有改

23、动并释放当前连接持有的数据库的锁。StringgetCatalog():获得连接对象的当前目录。booleanisClose():判断连接是否已关闭。booleanisReadOnly():判断连接是否为只读模式。voidsetReadOnly():设置连接为只读模式。voidclose():释放连接对象的数据库和JDBC资源。Statement类类Statement类是java.sql包中用于在指定的连接中处理SQL语句的类。数据库编程的要点是在程序中嵌入SQL命令。程序需要声明和创建连接数据库的Connection对象,并让该对象连接数据库。调用类DriverManager的静态方法get

24、Connection()获得Connection对象,实现程序与数据库的连。然后,用Statement类声明SQL语句对象,并调用Connection对象的createStatement()方法,创建SQL语句对象。例如,以下代码创建语句对象sql:Statementsql=null;trysql=con.createStatement();catch(SQLExceptione)ResultSet类类有了SQL语句对象后,调用语句对象的方法executeQuery()执行SQL查询,并将查询结果存放在一个用ResultSet类声明的对象中,例如,以下代码读取学生成绩表存于rs对象中:Resu

25、ltSetrs=sql.executeQuery(“SELECT*FROMksInfo”);ResultSet对象实际上是一个由查询结果数据的表,是一个管式数据集,由统一形式的数据行组成,一行对应一条查询记录。在ResultSet对象中隐含着一个游标,一次只能获得游标当前所指的数据行,用next方法可取下一个数据行。用数据行的字段(列)名称或位置索引(自1开始)调用形如getXXX()方法获得记录的字段植。以下是ResultSet对象的部分方法:bytegetByte(intcolumnIndex):返回指定字段的字节值。DategetDate(intcolumnIndex):返回指定字段的日

26、期值。floatgetFloat(intcolumnIndex):返回指定字段的浮点值。intgetInt(intcolumnIndex):返回指定字段的整数值。StringgetString(intcolumnIndex):返回指定字段的字符串值。doublegetDouble(StringcolumnName):返回指定字段的双精度值。longgetLong(StringcolumnName):返回指定字段的long型整值。booleannext():返回是否还有下一字段。以上方法中的columnIndex是位置索引,用于指定字段,columnName是字段名。可滚动集上另外一些常用的方法

27、如下:booleanprevious():将游标向上移动,当移到结果集的第一行时,返回false。voidbeforeFirst():将游标移结果集的第一行之前。voidafterLast():将游标移到结果集的最后一行之后。voidfirst():将游标移到第一行。voidlast():将游标移到最后一行。booleanisAfterLast():判游标是否在最后一行之后。booleanisBeforeFirst():判游标是否在第一行之前。booleanisLast():判游标是否在最后一行。booleanisFirst():判游标是否在第一行。intgetRow():获取当前所指的行(行

28、号自1开始编号,结果集空,返回0)。booleanabsolute(introw):将游标移到row行。Java数据库查询数据库查询简介简介利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如getXXX()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。Java数据库数据库更新更新数据库更新操作包括数据表创建、删除、以及数据表记录的增加、删除、修改等操作。如果利用数据 SQL命令实现,则利用Statement对旬的execut

29、eUpdate()方法,执行SQL的update语句,实现数据表的修改;执行SQL的insert语句,实现数据表记录的添加。下面用代码说明数据表更新的方法。与数据表连接时,需指定获得的ResultSet对象是可更新的。stmt=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);Java数据库之插入数据库之插入记录记录一一.使用使用Statement对象对象实现插入数据表记录的SQL语句的语法是:insertinto表名(字段名1,字段名2,)value(字段值1,字段值2,

30、)例如:insertintoksInfo(考号,姓名,成绩,地址,简历)value(200701,张大卫534,上海欧阳路218弄4-1202,)实现同样功能的Java程序代码是:sql=“insertintoksIno(考号,姓名,成绩,地址,简历)”;sql=sq1+“value(”+txtNo.getTxt()+,”+txtName.getText(0”,”;sql=sql+txtScore.getText();sql=sql+”,”+txtAddr.getText()+”,”+txtResume.getText()+”)”;stmt.executeUpdate(sql);二二.使用使用

31、ResultSet对象对象使用ResultSet对象的方法moveToInsertRow()将数据表游标移到插入位置,输入数据后,用方法insertRow()插入记录。例如,以下示意代码:Stringsql=“select*fromksInfo”;/生成SQL语句 ResultSetrs=stmt.executeQuery(sql);/获取数据表结果集 rs.moveToInsertRow();/将数据表游标移到插入记录位置 rs.updateString(1,200701);/向考号字段填入数据 rs.updateString(2,张大卫);/向名字字段填入数据 rs.updateInt(3

32、,534);/向成绩字段填入数据 rs.updateString(4,上海欧阳路218弄4-1202);/向地址字段填入数据 rs.updateString(5,);/向简历字段填入数据 tryrs.insertRow();catch(Exceptione);/完成插入三三.使用使用PrepareStatement对象对象与使用Statement对象的方法类似,只是创建SQL语句时暂时用参数?表示值,然后由SQL语句对象生成PrepareStatement对象,插入时通过设定实际参数,实现记录的更新。示意代码如下:sql=“insertintoksInfo(考号,姓名,成绩,地址,简历)val

33、ue(?,?,?,?,)”;PrepareStatementpStmt=connect.prepareStatement(sql);pStmt.setString(1,200701);/向考号字段填入数据 pStmt.setString(2,张大卫);/向名字字段填入数据 pStmt.setInt(3,534);/向成绩字段填入数据 pStmt.setString(4,上海欧阳路218弄4-1202);/向地址字段填入数据 pStmt.setString(5,);/向简历字段填入数据 pStmt.executeUpdate();Java数据库之修改数据库之修改记录记录一一.使用使用Statem

34、ent对象对象实现修改数据表记录的SQL语句的语法是:update表名 set字段名1=字段值1,字段名2=字段值2,where特定条件例如:updateksInfoset姓名=张小卫where姓名=张大卫先创建一个SQL语句,然砶调用Statement对象的executeUpdate()方法。例如,sql=“updateksInfoset姓名=”+txtName.getText();sql=sql+“,成绩=”+txtScore.getText();sql=sql+”,地址=”+txtAddr.getText();sql=sql+”,简历=”+txtResume.getText()+”whe

35、re考号=”+txtNo.getText();stmt.executeUpdate(sql);二二.使用使用ResultSet对象对象先建立ResultSet对象,然后直接设定记录的字段值,修改数据表的记录。例如,Stringsql=“select*fromksInfowhere姓名=张大卫”;/生成SQL语句 ResultSetrs=stmt.executeQuery(sql);/获取数据表结果集 if(rs.next()rs.updateString(2,张小卫);tryrs.updateRow();catch(Exceptione)三三.使用使用PrepareStatement对象对象创

36、建SQL语句时,暂时用参数?表示值,然后由SQL语句对象生成PrepareStatement对象,接着通过设定实际参数实现记录的更新。示意代码:sql=“updateksInfoset姓名=?where姓名=张大卫;PrepareStatementpStmt=connect.prepareStatement(sql);pStmt.setString(2,张小卫);/向名字字段填入数据 pStmt.executeUpdate();Java数据库之删除数据库之删除记录记录一一.使用使用Statement对象对象删除数据表记录的SQL语句的语法是:deletefrom表名 where特定条件例如:d

37、eletefromksInfowhere姓名=张大卫先创建一个SQL语句,然后调用Statement对象的executeUpdate()方法:stmt.executeUpdate(sql);二二.使用使用ResultSet对象对象先创建一个SQL语句,然后调用Statement对象的executeUpdate()方法。例如:Stringsql=“select*fromksInfowhere姓名=张大卫”;/生成SQL语句 ResultSetrs=stmt.executeQuery(sql);/获取数据表结果集 if(rs.next()rs.deleteRow();tryrs.updateRow();catch(Exceptione)三三.使用使用PrepareStatement对象对象创建SQL语句时,暂时用参数?表示值,然后由SQL语句对象生成PrepareStatement对象,接着设定实际参数实现特定记录的删除。例如,以下示意代码:sql=“deleteformksInfowhere姓名=?”;PrepareStatementpStmt=connect.prepareStatement(sql);pStmt.setString(2,张大卫);/给名字字段指定数据 pStmt.executeUpdate();

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服