资源描述
第7章JSP中使用数据库,在当今这一网络技术蓬勃发展的时代,数据库扮演了非常重要的角色;如果在服务器端没有数据库系统的支持,像搜索引擎、电子商务等Web应用程序就很难处理数量庞大的数据,因此,Web应用程序一般都需要访问数据库。现在最常用的是关系数据库,JSP可以访问多种不同的关系数据库,如Oracle数据库、SQLServer数据库、DB2数据库、MySQL数据库和MicrosoftAccess数据库等。在JSP页面中,对数据库的访问一般都是通过JDBC进行的,它为数据库应用开发人员提供了独立于具体数据库的数据库访问方法。,引言,教学目标,了解JDBC的相关概念掌握使用JDBCODBC桥访问数据库掌握使用加载纯java数据库驱动程序访问数据库掌握常用SQL语句的使用,第7章在JSP中使用数据库,本章大部分例子采用的模式是JSP+JavaBean模式,即JSP页面调用bean来完成对数据库的操作,使用的数据库管理系统是SQLServer2000。,7.1JDBC,JDBC是Java数据库连接(JavaDataBaseConnectivity)的简称,由一组用Java语言编写的类和接口组成,它们位于java.sql包中,提供了跨平台的数据库访问方法,并且为数据库应用开发人员提供了一种标准的应用程序设计接口(API)。,通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。在JSP程序中,程序员可以使用JDBCAPI将SQL语句发送到相应的任何一种数据库,从而实现对数据库的访问。,7.1JDBC,7.1JDBC,JDBC的基本功能1.与一个数据库建立连接。2.向已连接的数据库发送SQL语句。3.处理SQL语句返回的结果。图7.6,7.2数据库连接的常用方式,1.一种常见方式是建立起一个JDBC-ODBC桥接器2.另一种使用纯Java数据库驱动程序,7.3使用JDBCODBC桥访问数据库,创建ODBC数据源建立JDBCODBC桥接器和ODBC数据源指定的数据库建立连接,ODBC是由微软开发的、目前用得最广泛的访问关系数据库的API,它是用C语言实现的标准应用程序,用来在相关或不相关的数据库管理系统(DBMS)中存取数据的。通过ODBCAPI,应用程序可以存取保存在多种不同DBMS中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口,它提供了连接几乎任何一种平台、任何一种数据库的能力。事实上,JDBC通过JDBCODBC桥接器实现ODBC可以实现的所有的对数据库的操作能力。图7.7-P131,7.3使用JDBCODBC桥访问数据库,7.3.1创建ODBC数据源,要实现通过ODBC访问数据库,就必须首先为数据库建立一个ODBC数据源,这样数据库才能实现和应用程序的交互。单击“开始”|“控制面板”菜单命令,打开“控制面板”窗口,然后在窗口中双击“管理工具”图标,打开“管理工具”窗口,再双击“数据源(ODBC)”图标,打开“ODBC数据源管理器”窗口,单击“添加”按扭,打开“创建新数据源”窗口,然后即可创建数据源了。,7.3.2建立JDBCODBC桥接器,TryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundExceptione),7.3.3与ODBC数据源指定的数据库建立连接,Connectioncon=DriverManager.getConnection(“jdbc:odbc:数据源名字”,”loginname”,”password”)实例:showByJdbcOdbc.jsp,java.sql.DriverManager,该类负责加载、注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException试图建立到给定数据库URL的连接。DriverManager试图从已注册的JDBC驱动程序集中选择一个适当的驱动程序。参数:url-jdbc:subprotocol:subname形式的数据库urluser-数据库用户,连接是为该用户建立的password-用户的密码返回:到URL的连接抛出:SQLException-如果发生数据库访问错误,java.sql.Connection,该接口代表数据库连接,并拥有创建SQL语句的方法,以完成常规的SQL操作,并为数据库事务处理提供提交和回滚方法。StatementcreateStatement()返回一个Statement对象Voidclose()用于断开连接,java.sql.Statement,它用来向数据库提交SQL语句的执行结果。ResultSetexecuteQuery(Stringsql)执行给定的SQL语句,该语句返回单个ResultSet对象。,java.sql.ResultSet,在使用Statement中的executeQuery方法执行SELECT查询指令时,查询的结果将会放在ResultSet中。,ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next方法将光标移动到下一行;因为该方法在ResultSet对象没有下一行时返回false,所以可以在while循环中使用它来迭代结果集。默认的ResultSet对象不可更新,仅有一个向前移动的光标。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。,java.sql.ResultSet,ResultSet接口提供用于从当前行获取列值的获取方法(getBoolean、getLong等)。可以使用列的索引编号或列的名称获取值。一般情况下,使用列索引较为高效。列从1开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,每列只能读取一次。,java.sql.ResultSet,列名或列号可用于标识要从中获取数据的列。例如,如果ResultSet对象rs的第二列名为“姓名”,并将值存储为字符串,则下列任一代码将获取存储在该列中的值:Strings=rs.getString(姓名);Strings=rs.getString(2);,java.sql.ResultSet,7.4使用纯Java数据库驱动程序,准备工作:下载并安装JDBC驱动程序微软推出的JDBC驱动程序SQLServer2000DriverforJDBC可以实现直接与SQLServer数据库的连接,用户可以到微软的官方网站,7.4.1加载SQL的驱动,tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();catch(Exceptione)out.print(e);,7.4.2和数据库建立连接,tryStringuri=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=Student;Stringuser=sa;Stringpassword=sa;con=DriverManager.getConnection(uri,user,password);catch(SQLExceptione)实例:showBySQLDriver.jsp,7.5查询操作,与数据库建立连接后,就可以使用JDBC提供的API和数据库交互信息,如查询、修改和更新数据库中的表等。创建Statement对象Statementsql=con.createStatement();sql对象就可以调用相应的方法,实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中ResultSetrs=sql.executeQuery(SELECT*FROMscore);,7.5.1顺序查询,如何获取数据库中表的结构信息呢?ResultSetMetaData可用于获取关于ResultSet对象中列的类型和属性信息ResultSetMetaDatarsmd=rs.getMetaData();IntgetColumnCount()返回此ResultSet对象中的列数。StringgetColumnName(intcolumn)获取指定列的名称。,DatabaseMetaDataDatabaseMetaDatametadata=connection.getMetaData();ResultSetrs1=metadata.getColumns(null,null,tableName,null);,7.5.1顺序查询,
展开阅读全文