![Java网络与数据库编程基础_第1页](http://file4.renrendoc.com/view/bc01ce5f00d0d2c963ccf52c678bb217/bc01ce5f00d0d2c963ccf52c678bb2171.gif)
![Java网络与数据库编程基础_第2页](http://file4.renrendoc.com/view/bc01ce5f00d0d2c963ccf52c678bb217/bc01ce5f00d0d2c963ccf52c678bb2172.gif)
![Java网络与数据库编程基础_第3页](http://file4.renrendoc.com/view/bc01ce5f00d0d2c963ccf52c678bb217/bc01ce5f00d0d2c963ccf52c678bb2173.gif)
![Java网络与数据库编程基础_第4页](http://file4.renrendoc.com/view/bc01ce5f00d0d2c963ccf52c678bb217/bc01ce5f00d0d2c963ccf52c678bb2174.gif)
![Java网络与数据库编程基础_第5页](http://file4.renrendoc.com/view/bc01ce5f00d0d2c963ccf52c678bb217/bc01ce5f00d0d2c963ccf52c678bb2175.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java网络与数据库编程基础Java网络编程之IP地址和InetAddress类难点:网络套接字、客户机端与服务器端实现通信的应用程序。TCP/IP协议和IP地址为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TCP/IP协议,它是Internet中各方所遵循的公共协议.TCP(TransportControlProtocol)是一种传输控制协议,IP(InternetProtocol)是一种网际协议,TCP/IP代表这两个协议的。
TCP/IP分为四个层次:网络接口层:负责接收和发送物理帧;网络层:负责相邻节点之间的通信;传输层:负责起点到终点的通信;应用层:提供诸如文件传输、电子邮件等应用程序。TCP/IP协议是一个协议族,由一组协议组成,主要包含以下更具体的协议:Telnet(远程登录):允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。FTP(FileTransferprotocol,文件传输协议):允许用户将远程主机上的文件复制到自己的计算机上。SMTP(simpleMailTransferProtocol,简单邮件传输协议):用于传输电子邮件。NFS(NetworkfileServer,网络文件服务器):使多台计算机透明地访问彼此的目录。HTTP:一种超文本传输协议,它是基于TCP/IP协议的,是WWW浏览器和服务器之间应用层的通信协议。HTTP是一种通用、无状态、面向对象的协议。HTTP会话(事务)包括四个步骤:连接(Connection)、请求(Request)、应答(Response)和关闭(Close)。IP地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分A、B、C、D、E五类,常用的是A、B、C三类:A(-55):0,7位网络号,后24位为主机号;B(-55):10,14位网络号,后16位为主机号;C(-55):110,21位网络号,后8位为主机号;D(-55):1110,28位多点广播组标号;E(-55):1111,保留试验使用。通常,IP地址用四段十进制数表示(8位一段)。例如:
87
或用文字域名表示。例如:
在因特网上,域名服务器(DomainNameServer,DNS)执行文字名称到二进制网络地址的映射。InetAddress类J包中有InetAddress类的定义,InetAddress类的对象用于IP地址和域名,该类提供以下方法:getByName(Strings):获得一个InetAddress类的对象,该对象中含有主机的IP地址和域名,该对象用如下格式表示它包含的信息:/0;StringgetHostName():获取InetAddress对象的域名;StringgetHostAddress():获取InetAddress对象的IP地址;getLocalHost():获得一个InetAddress对象,该对象含有本地机的域名和IP地址。Java网络编程之统一资源定位符URL统一资源定位符URL(UniformResourceLocator)是www客户机访问Internet时用来标识资源的名字和地址。超文本链路由统一资源定位符URL维持。URL的格式是:
<METHOD>://<HOSTNAME:PORT>/<PATH>/<FILE>
其中:Method是传输协议:HOSTNAME是文档和服务器所在的Internet主机名(域名系统中DNS中的点地址);PORT是服务端口号(可省略);PATH是路径名,FILE是文件名。例如:
/(http是协议名,是主机名)
/view/6079.html(是主机名,view/6079.html是文件路径和文件名)URL类J包有URL类,一个URL对象可以表示一个网络资源。程序利用URL对象能实现Internet寻址、网络资源的定位连接、在客户机与服务器之间直接访问等。URL类的构造方法是
URL(Strings)
其中,s指出网络中的一个资源。
利用URL对象访问网上资源的方法是:先创建URL对象,如以下代码所示:
URLmyURL;
try{
myURL=newURL(“:80/”);
}catch(MalformedURLExceptione){
System.out.println(“有错的URL:”+url+e);
}
因创建URL对象可能会产生MalformedURLException异常。所以,创建URL对象的代码应出现在try…catch语句块中,以便能捕捉网址错误异常。URLConnection类要接收和发关信息还要用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。以下是示意获得URLConnection对象的代码。
URLmu=newURL(“/”);//先要创建一个URL对象
URLConnectionmuC=mu.openConnection();//获得URLConnection对象
上述代码说明,先要创建一个URL对象,然后利用URL对象的openConnection()方法,从系统获得一个URLConnection对象。程序有了URLConnection对象后,就可使用URLConnection类提供的以下方法获得流对象和实现网络连接:getOutputStream():获得向远程主机发送信息的OutputStream流对象;getInputStream():获得从远程主机获取信息的InputStream流对象。有了网络连接的输入和输出流,程序就可实现远程通信;connect():设置网络连接。信息的发送和接收发送和接收信息要获得流对象,并由流对象创建输入或输出数据流对象。然后,就可以用流的方法访问网上资源。Java套接字(Socket)网络应用模式主要有:主机/终端模式:集中计算,集中管理;客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理;浏览器/服务器模式:利用Internet跨平台。www(万维网)就是建立在客户机/服务器模式上,以HTML语言和HTTP协议为基础,能够提供各种Internet服务的信息浏览系统。网络信息放在主机的不同位置,www服务器利用超文本链路链接各项信息。www客户机(浏览器Brower)负责与服务器建立联系,向服务器发送请求,处理HTML超媒体,提供图形用户界面(GUI),显示信息等。
在客户机/服务器工作模式中,在Server端,要准备接受多个Client端计算机的通信。为此,除用IP地址标识Internet上的计算机之外,另还引入端口号,用端口号标识正在Server端后台服务的线程。端口号与IP地址的组合称为网络套接字(socket)。Java语言在实现C/S模式中,套接字分为两类:在Server端,ServerSocket类支持底层的网络通信;在Client端,Socket类支持网络的底层通信。Server机通过端口(总线I/O地址)提供面向Client机的服务;Server机在它的几个不同端口分别同时提供几种不同的服务。Client接入Server的某一端口,通过这个端口提请Server机为其服务。规定:端口号0~1023供系统专用。例如,HTTP协议在端口80,telnet协议在端口23。端口1024~65535供应用程序使用。
当Client程序和Server程序需要通信时,可以用Socket类建立套接字连接。套接字连接可想象为一个电话呼叫:最初是Client程序建立呼叫,Server程序监听;呼叫完成后,任何一方都可以随时讲话。双方实现通信有流式socket和数据报式socket两种可选方式:流式socket是有连接的通信,即TCP(TransmissionControlProtocol):每次通信前建立连接,通信结束后断开连接。特点是可以保证传输的正确性、可靠性。数据报式socket是无连接的通信,即UDP(UserDatagramProtocol):将欲传输的数据分成小包,直接上网发送。无需建立连接和拆除连接,速度快,但无可靠保证。流式socket在Client程序和Server程序间建立通信的通道。每个socket可以进行读和写两种操作。对于任一端,与对方的通信会话过程是:
建立socket连接,获得输入/输出流,读数据/写数据,通信完成后关闭socket(拆除连接)。利用socket的构造方法,可以在客户端建立到服务器的套接字对象:
Socket(Stringhost,intport):host是服务器的IP地址,port是端口号,这些是预先约定的。
例如,代码:
try{
SocketmySocket=newSocket(“”,1860);
}catch(IOExceptione){}
然后,用getInputStream()方法获得输入流,用这个输入流读取服务器放入“线路”的信息;用getOutputStream()方法获得输出流,用这个输出流将信息写入“线路”。利用ServerSocket的构造方法可以在服务器建立接受客户套接字的服务器套接字对象:
ServerSocket(intport):指定端口号,创建一个ServerSocket对象。端口号port要与客户呼叫的端口号相同。为此,用以下形式代码:
try{
ServerSocketserverSocket=newServerSocket(1860);
}catch(IOExceptione){}
服务器端程序在指定的端口监听,当收到Client程序发出的服务请求时,创建一个套接字对象与该端口对应的Client程序通信。例如,执行上述建立服务器套接字对象的代码,确立了对象serverSocket后,就可能它使用accept()方法,得到Socket对象,接收Client程序来自套接字mySocket的信息。如以下代码所示:
try{
Socketsc=serverSocket.accept();//ac是一个Socket对象
}catch(IOExceptione){}
要撤销服务,可以关闭Socket对象sc:
sc.close();C/S模式中的Client端应用程序。这是一个Client端的流式Socket通信的简单实例,代码说明Client端程序的编写方法。例中,Client程序向服务器主机的端口4441提出请求,连接建立后完成对服务器的读写。与例10.3Client端应用程序对应的Server端应用程序。程序在4441端口监听,当检测到有客户机请求时,产生一个内为“客户,你好,我是服务器”的字符串输出到客户端。Java程序与数据库连接一个网络关系数据库应用系统是一个三层次结构。客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信;数据库服务程序通过SQL命令与数据库管理系统通信。
Java程序与数据库连接方法有两种。一种是使用JDBC-ODBC桥接器与数据库连接,一种是用纯Java的JDBC驱动程序实现与数据库连接。使用JDBC-ODBC桥接器与数据库连接Java程序使用JDBC-ODBC桥接器与数据库连接,Java程序与数据库通信的过程是:
先由数据库应用程序向ODBC驱动管理器发出API调用,ODBC驱动管理器将这个调用转换成向数据库管理系统的ODBC驱动程序调用,数据库管理系统又将这个调用转换成对操作系统的数据输入/输出调用。最后,操作系统从数据库中得到实际数据逐级返回。
数据库编程首先要设置数据源,在ODBC中设置数据源的步骤如下:打开Windows控制面板中的管理工具。对于windowsXP:选择“性能维护”>>“管理工具”>>“数据源(ODBC)”;对于windows2000:选择“管理工具”>>“数据源”。打开“数据源”。出现ODBC数据源管理器对话框,显示现有的数据源名称。选择“用户DSN”,单击“添加”按钮,出现安装数据源驱动程序对话框。Access(*.mdb)数据源,单击“完成”按钮,出现“创建数据源对话框,键入需要创建的数据源名,并为创建的数据源选择一个数据库表。单击数据库区域的“选择”按钮,选择需要的数据库表。当需要为数据源授权访问级别时,单击“高级”按钮。设置登录名和密码后,单击“确定”按钮,完成Access数据库在ODBC管理器中的配置。如果还没有数据库表,则需创建一个数据库表。数据源就是数据库,在设定了数据源的基础上,Java程序要访问数据库表,还要建立JDBC-ODBC桥接器,让程序与数据库连接。以后,程序就可向数据库发送SQL语句,处理数据库返回的结果。Java数据库连接JDBC(JavaDataBaseConnectivity)由一组用Java语言编写的类和接口组成,JDBC是Java程序与数据库连接API。它能做以下三件事情:与某个数据库建立连接、向数据库发送SQL语句和处理数据库返回的结果。
调用类方法Class.forName(Strings)能建立JDBC-ODBC桥接器。例如,代码:
try{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}catch(Exceptione){}
为Java程序加载了驱动程序。用纯Java的JDBC驱动程序实现与数据库连接Java程序也可以用纯Java的JDBC驱动程序实现与数据库连接。这种方法应用较广泛,但是需要下载相应的驱动程序包,因为不同的数据库的连接代码可能不同,连接不同的数据库,加载的驱动程序也可能不同。例如,连接SQLServer的驱动程序在网站下载,有3个包:msbase.jar,mssqlserver.jar和msutil.jar,并要求将这3个包放在jdk\jre\lib\ext\目录下,或在CLASSPATH中设置其放置位置。使用纯Java的JDBC驱动程序实现与数据库连接的过程如下:加载驱动程序。有两种加载驱动程序的方式:一各是将驱动程序添加到java.lang.System的属性jdbc.drivers中。这是一个DriverManager类加载驱动程序类名的列表,表元用冒号分隔。另一种方式是从相关的网站下载驱动程序后,在程序中利用Class.forName()方法加载指定的驱动程序。例如:
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);创建指定数据库的URL。数据库的URL对象类似网络的统一资源定位符,其格式是:
jdbc:subProtocol:subName://hostname:port:Databasename=XXX
其中,subprotocol是某种驱动程序支持的数据库连接机制;subName是当前连接机制下的具体名称;hostName是主机名;port是相应的连接端口;DatabaseName是要连接的数据库名称。例如,以下代码可以是一个数据库的URL:
jdbc:Microsoft:sqlserver://localhost:1433;Databasename=ksinfo
该数据库的URL说明利用miscrosoft提供的机制,用sqlserve驱动,通过1433端口访问本机上的ksInfo数据库。建立连接。驱动程序管理器(DriverManager)的方法getConnection()建立连接。java数据库访问类和接口DriverManager类DriverManager类处理驱动程序的加载和建立新数据库连接。DriverManager是java.sql包中用于管理数据库驱动程序的类。通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象:
staticConnectiongetConnection(Stringurl,Stringusername,Stringpassword)
指定数据的URL用户名和密码创建数据库连接对象。url的语法格式是:
jdbc:<数据库的连接机制>:<ODBC数据库名>。Connection类Connection类是java.sql包中用于处理与特定数据库连接的类。Connection对象是用来表示数据库连接的对象,Java程序对数据库的操作都在这种对象上进行。Connection类的主要方法有:StatementcreateStatement():创建一个Statement对象。StatementcreateStatement(intresultSetType,intresultSetConcurrency):创建一个Statement对象,生成具有特定类型的结果集。voidcommit():提交对数据库的改动并释放当前持有的数据库的锁。voidrollback():回滚当前事务中的所有改动并释放当前连接持有的数据库的锁。StringgetCatalog():获得连接对象的当前目录。booleanisClose():判断连接是否已关闭。booleanisReadOnly():判断连接是否为只读模式。voidsetReadOnly():设置连接为只读模式。voidclose():释放连接对象的数据库和JDBC资源。Statement类Statement类是java.sql包中用于在指定的连接中处理SQL语句的类。数据库编程的要点是在程序中嵌入SQL命令。程序需要声明和创建连接数据库的Connection对象,并让该对象连接数据库。调用类DriverManager的静态方法getConnection()获得Connection对象,实现程序与数据库的连。然后,用Statement类声明SQL语句对象,并调用Connection对象的createStatement()方法,创建SQL语句对象。例如,以下代码创建语句对象sql:
Statementsql=null;
try{
sql=con.createStatement();
}catch(SQLExceptione){}ResultSet类有了SQL语句对象后,调用语句对象的方法executeQuery()执行SQL查询,并将查询结果存放在一个用ResultSet类声明的对象中,例如,以下代码读取学生成绩表存于rs对象中:
ResultSetrs=sql.executeQuery(“SELECT*FROMksInfo”);
ResultSet对象实际上是一个由查询结果数据的表,是一个管式数据集,由统一形式的数据行组成,一行对应一条查询记录。在ResultSet对象中隐含着一个游标,一次只能获得游标当前所指的数据行,用next方法可取下一个数据行。用数据行的字段(列)名称或位置索引(自1开始)调用形如getXXX()方法获得记录的字段植。以下是ResultSet对象的部分方法:bytegetByte(intcolumnIndex):返回指定字段的字节值。DategetDate(intcolumnIndex):返回指定字段的日期值。floatgetFloat(intcolumnIndex):返回指定字段的浮点值。int
getInt(intcolumnIndex):返回指定字段的整数值。StringgetString(intcolumnIndex):返回指定字段的字符串值。doublegetDouble(StringcolumnName):返回指定字段的双精度值。longgetLong(StringcolumnName):返回指定字段的long型整值。booleannext():返回是否还有下一字段。以上方法中的columnIndex是位置索引,用于指定字段,columnName是字段名。可滚动集上另外一些常用的方法如下:booleanprevious():将游标向上移动,当移到结果集的第一行时,返回false。voidbeforeFirst():将游标移结果集的第一行之前。voidafterLast():将游标移到结果集的最后一行之后。voidfirst():将游标移到第一行。voidlast():将游标移到最后一行。booleanisAfterLast():判游标是否在最后一行之后。booleanisBeforeFirst():判游标是否在第一行之前。booleanisLast():判游标是否在最后一行。booleanisFirst():判游标是否在第一行。intgetRow():获取当前所指的行(行号自1开始编号,结果集空,返回0)。booleanabsolute(introw):将游标移到row行。Java数据库查询简介利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如getXXX()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。Java数据库更新数据库更新操作包括数据表创建、删除、以及数据表记录的增加、删除、修改等操作。如果利用数据SQL命令实现,则利用Statement对旬的executeUpdate()方法,执行SQL的update语句,实现数据表的修改;执行SQL的insert语句,实现数据表记录的添加。下面用代码说明数据表更新的方法。与数据表连接时,需指定获得的ResultSet对象是可更新的。
stmt=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);Java数据库之插入记录一.使用Statement对象实现插入数据表记录的SQL语句的语法是:
insertinto表名(字段名1,字段名2,……)value(字段值1,字段值2,……)
例如:
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);二.使用ResultSet对象使用ResultSet对象的方法moveToInsertRow()将数据表游标移到插入位置,输入数据后,用方法insertRow()插入记录。例如,以下示意代码:
Stringsql=“select*fromksInfo”;//生成SQL语句
ResultSetrs=stmt.executeQuery(sql);//获取数据表结果集
rs.moveToInsertRow();//将数据表游标移到插入记录位置
rs.updateString(1,’200701’);//向考号字段填入数据
rs.updateString(2,’张大卫’);//向名字字段填入数据
rs.updateInt(3,534);//向成绩字段填入数据
rs.updateString(4,’上海欧阳路218弄4-1202’);//向地址字段填入数据
rs.updateString(5,’’);//向简历字段填入数据
try{rs.insertRow();}catch(Exceptione){};//完成插入三.使用PrepareStatement对象与使用Statement对象的方法类似,只是创建SQL语句时暂时用参数?表示值,然后由SQL语句对象生成PrepareStatement对象,插入时通过设定实际参数,实现记录的更新。示意代码如下:
sql=“insertintoksInfo(考号,姓名,成绩,地址,简历)value(?,?,?,?,’’)”;
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数据库之修改记录一.使用Statement对象实现修改数据表记录的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()+”’where考号=”+txtNo.getText();
stmt.executeUpdate(sql);二.使用ResultSet对象先建立ResultSet对象,然后直接设定记录的字段值,修改数据表的记录。例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度公路货运时效保障合同汇编
- 2025年度国际房地产投资合作合同
- 2025年度工程造价信息化管理服务合同
- 2025年度新型医疗设备区域代理销售合同
- 2025年度羽绒产业人才培养与交流合同
- 2025年工矿企业新能源设备购置与服务合同范本
- 2025年度艺术品交易合同作废及赔偿处理规定
- 2025年度绿色建筑改造施工总承包协议
- 2025年中国工业元宇宙行业发展现状、运行格局及投资前景分析报告(智研咨询)
- 2025年度还建房项目竣工验收合同
- 超滤培训课件
- 热线电话管理制度
- AutoCAD 2020中文版从入门到精通(标准版)
- 《海峡两岸经济合作框架协议》全文
- 纺丝原液制造工(中级)理论考试复习题库(含答案)
- ArcGIS软件入门培训教程演示文稿
- 大梅沙河道河道流量水位
- 紧固件常用标准件汇总图
- 人教版初二英语八年级上册全册英语单词表
- 《红色经典》校本课程
- 运动技能学习与控制课件第十章动作技能的指导与示范
评论
0/150
提交评论