4.3.2 JDBC应用程序结构 利用JDBC API进行数据库访问的应用程序基本结构如图3-1所示,主要包括下列部分: paper51.com (1)装载驱动程序:用DriverManager类提供的Class.forName()方法来加载驱动程序,例如用C1ass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)语句直接加载SUN公司的JDBC-ODBC桥接驱动程序。 内容来自www.paper51.com 用C1ass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")可以连接SQLServer2000数据库,由驱动程序负责向DriverManager注册,在与数据库相连时使用该驱动程序。 内容来自论文无忧网 www.paper51.com
内容来自论文无忧网 www.paper51.com 图3-1 JDBC应用程序结构 http://www.paper51.com
(2)建立与数据库的连接。用DriverManager类提供的getConnection 内容来自论文无忧网 www.paper51.com (URL、userName,PassWord)方法来建立与数据源的连接,返回一个Connection对象。其中URL参数格式为:jdbc:<subprotocol>:<subName>。<subprotocol>指支持数据库连接的驱动程序使用的子协议,例如ODBC引擎。<subName>指数据源的信息、例如数据源的IP地址、端口号、数据源名。 paper51.com
(3)创建语句对象。一旦建立了与数据库的连接,就可以利用Statement接口创建SQL语句对象,例如:Statementstmt=connect.createStatement()。根据需要还可以创建PrepareStatement对象来处理带参的SQL语句,或创建CallableStatement对象来处理SQL存储过程。 内容来自www.paper51.com (4)执行SQL语句。利用创建的语句对象,用Statement.executedXXX方法来执行SQL语句,并返回一个ResultSet对象。例如: 内容来自论文无忧网 www.paper51.com ResultSetrs=stmt.executeQuery(“select * from YongHu”)执行对YongHu表的查询操作,并返回rs结果集。以下代码是结合本系统数据库访问的具体实现: paper51.com String SQLDriver ="com.microsoft.jdbc.sqlserver.SQLServerDriver"; paper51.com String cUser = "jdbc:microsoft:sqlserver://" + serverName + ":1433;" + 内容来自论文无忧网 www.paper51.com "DatabaseName=User"; // serverName代表数据库服务器IP地址或服务器名 copyright paper51.com try { copyright paper51.com try { 内容来自www.paper51.com
Class.forName(SQLDriver); //装载驱动 内容来自论文无忧网 www.paper51.com
connR = DriverManager.getConnection(cUser, "sa", ""); //创建连接 paper51.com stmR = connR.createStatement(); //创建SQL语句对象 内容来自论文无忧网 www.paper51.com } copyright paper51.com catch(ClassNotFoundException es) //捕获ClassNotFoundException异常 copyright paper51.com { paper51.com es.printStackTrace(); //打印异常抛出地点等信息 内容来自论文无忧网 www.paper51.com } http://www.paper51.com } 内容来自论文无忧网 www.paper51.com catch (SQLException ex) //捕获SQLException异常 paper51.com { copyright paper51.com ex.printStackTrace(); 内容来自www.paper51.com } copyright paper51.com
以上代码是实现数据库的连接,可以连接到服务器名为serverName的SQLServer2000网络数据库。 内容来自www.paper51.com String updateStatePort = "updateYongHu set State=1,Port="+port+"where UserName='" + userName +"'"; 内容来自www.paper51.com //设置用户为在线,将本地使用的Port在数据库服务器上更新的SQL语句 http://www.paper51.com
String updateIPAddresss = "update YongHu set IPAddress='"+localIP + "' where UserName='" + userName + "'"; //更新数据库服务器上用户的IP地址 copyright paper51.com int i = stmR.executeUpdate(updateState); //执行SQL语句 内容来自论文无忧网 www.paper51.com int l = stmR.executeUpdate(updateIPAddresss);//执行SQL语句 paper51.com 以上代码可以实现数据库的更新:当用户登录后,在网络数据库服务器上将其状态设为在线,即State为1,并将用户本地的IP地址,与端口号在表内更新。 paper51.com 4.4 Java局域网解决方案 内容来自论文无忧网 www.paper51.com 4.4.1 C/S的概念 内容来自论文无忧网 www.paper51.com 客户机/服务器网络中,以计算机主机或服务器为中心,其他计算机、工作站与服务器连接在一起。客户机之间要传递信息均要得到服务器的允许才能进行。在C/S模式中,将请求服务的一方称为客户(C1ient),将提供服务的一方称为服务器(Server)。服务程序一直在一个服务地址(端口)监听对该服务的请求,直到客户对这个服务地址提出请求,服务程序为客户请求作出适当的反应。 copyright paper51.com 4.4.2 用Socket实现C/S编程 内容来自www.paper51.com
套接字(Socket)编程采用客户机/服务器的网络模式。服务器进程一直驻守在服务器上,客户进程向服务器进程发出连接请求,服务器进程响应并建立连接;服务进程与客户进程建立连接后,客户进程发送数据,服务进程处理这些数据并将处理结果返回给客户端进程。 内容来自论文无忧网 www.paper51.com |