《JSP笔记》之十第七章JSP中使用数据库在本章中,我们使用SQL Server 2000数据库管理系统。
特别约定,建立新的数据库名为:student,在其下创建表:表1:student;表2:login 。
§7.1 SQL Server 2000数据库管理系统§7.2 JDBCJDBC是Java数据库连接API,它由一些Java类和接口组成。
在JSP中可以使用JDBC 实现对数据库中表记录的查询、修改、插入和删除等操作。
JDBC技术在JSP开发中占有很重要的地位。
经常使用JDBC进行如下操作:1.与一个数据库建立连接2.向已连接的数据库发送SQL语句3.处理SQL语句返回的结果§7.3 数据库连接的常用方式应用程序必须首先与数据库建立连接。
本节介绍常用的两种连接方式:建立JDBC-ODBC桥接器和加载纯Java数据库驱动程序。
§7.3.1 JDBC-ODBC桥接器使用JDBC-ODBC桥接器方式与数据库建立连接,要经过:创建ODBC数据源――>建立JDBC-ODBC桥接器――>和ODBC数据源指定的数据库建立连接共3个步骤。
1.创建ODBC数据源:步骤见教材,这里规定:数据源名:student,数据库名:student, 用户名:sa 密码:sa。
2.建立JDBC-ODBC桥接器为了连接student数据源的student数据库,首先要建立一个JDBC-ODBC桥接器:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);这里,Class是包ng中的一个类,该类通过调用它的静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类来建立JDBC-ODBC桥接器。
建立桥接器时可能发生异常,因此捕获这个异常。
所以建立桥接器的标准语句是:try{Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);}Catch(ClassNotFoundException e){out.println(e)}3.与ODBC数据源指定的数据库建立连接编写连接数据库的Java代码不会出现数据库的名称,只能出现数据源的名字。
先使用java.sql包中的Connection类声明一个连接对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个对象:Connection con=DriverMagager.getConnection(“jdbc:odbc:数据源名字”,”login name”,”password”);其中login name 和password 是建立数据源时所使用的用户名和密码。
建立连接时应捕获SQLException异常:try{Connection con=DriverManager.getConnection(“jdbc:odbc:student”,”sa”,”sa”);}catch(SQLException e){out.println(e);}这样就与数据源student建立了连接。
应用程序一旦与某个数据源建立连接,就可以通过SQL语句与该数据源所指定的数据库中的表交互信息,如查询、修改、更新表中的记录。
下例中是一个简单的JSP页面,该页面中的Java程序片代码负责连接到数据源student,查询该数据源中的数据库student中的表student的全部记录。
例1用JDBC-ODBC连接数据库,并显示表student中的全部记录。
chap9-1(odbc).jsp<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><HTML><BODY><%Connection con;Statement sql;ResultSet rs;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e){out.println(e);}try {con=DriverManager.getConnection("jdbc:odbc:student","sa","sa");sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM student");%><Table Border bgcolor="#CCFFFF"><TR><TH width=100><font face="宋体">学号</font><TH width=100><font face="宋体">姓名</font><TH width=50><font face="宋体">学分</font></TR><%while(rs.next()){%><TR><TD ><div align="center"><%=rs.getString(1)%></div></TD><TD ><div align="center"><%=rs.getString(2)%></div></TD><TD ><div align="center"><%=rs.getInt(3)%></div></TD></TR><% }%></Table><% con.close();}catch(SQLException e1) {}%></BODY></HTML>§7.3.2 使用纯Java数据库驱动程序方式实现连接用Java语言编写的驱动程序称为纯Java驱动程序。
简单地说,JDBC可以调用本地的纯Java驱动程序和相应的数据库建立连接。
这种连接数据库方式要经过2个步骤:加载纯Java驱动程序->与指定的数据库连接。
1.加载纯Java驱动程序:这种方式下不需要设置数据源,由于不依赖于ODBC,使得应用程序具有很好的移植性。
目前,许多数据库厂商都提供了自己的相应的纯Java驱动程序。
当使用纯Java驱动程序访问数据库时,必须要保证在连接数据库的应用程序所驻留的计算机上安装相应DBMS提供的纯Java驱动程序。
比如,Tomcat服务器上的某个Web应用程序想访问SQKServer2000数据库管理系统所管理的数据库,Tomcat服务器所驻留的计算机上必须要安装SQLServer 2000提供的纯Java驱动程序。
我们这里,使用的是MS SQL Server 2000数据库管理系统。
所以需要把该厂商提供的jar包:mssqlserver.jar、msutil.jar、msbase.jar挎贝到Java的jre\lib\ext中,或复制到Tomcat 服务器安装目录的文件夹的common\lib中。
准备好了后,加载纯Java驱动程序:try{Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();}catch(Exception e){out.println(e);}2.和指定的数据库建立连接假设应用程序要与SQL Server 数据库服务器管理的数据库student建立连接,而有权访问数据库student的用户的id和密码分别是sa、sa,那么建立连接的代码如下:try{String url=”jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student”;String user=”sa”;String password=”sa”;con=DriverManager.getConnection(url,user,password);}catch(SQLException e){out.println(e);}下面的例子是采用纯Java数据库驱动程序方式来实现上一个例题的例子。
例2使用纯Java数据库驱动方式显示表中的全部记录chap9-2(jdbc).jsp<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><HTML><BODY><%Connection con;Statement sql;ResultSet rs;try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();}catch(Exception e){out.print(e);out.print("***************");out.print("<br>");}try{String url;url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";String user="sa";String password="sa";con=DriverManager.getConnection(url,user,password);sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM student");%><CENTER><TABLE border="" bgcolor="#74bbc0"><TBODY><TR><TH width="100">学号</TH><TH width="100">姓名</TH><TH width="50">学分</TH></TR><%while(rs.next()){%><TR align="center"><TD><%=rs.getString(1)%></TD><TD><%=rs.getString(2)%></TD><TD><%=rs.getInt(3)%></TD></TR><%}%></TBODY></TABLE></CENTER><%con.close();}catch(SQLException e1){out.println(e1);}%></BODY></HTML>§7.3.3 关闭与数据库的连接当程序不再使用与数据库的连接时,应使用Connection对象的close方法关闭与数据库的连接。