您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第5章-JSP中使用数据库
1教学活动首页基本内容第5章JSP中使用数据库教学目的与要求:通过本章的学习让学生了解数据源的设置过程;理解JDBC-ODBC桥接器的工作原理,连接数据库的其他方式,查询Excel电子表格;掌握查询记录,更新记录,添加记录,删除记录的操作方法;并能实现分页显示记录,使用同步连接。教学内容:5.1数据源5.2JDBC-ODBC桥接器5.3查询记录5.4更新记录5.5添加记录5.6删除记录5.7分页显示记录5.8连接数据库的其他方式5.9查询Excel电子表格5.10使用同步连接教学基本要求:了解:数据源的设置理解:JDBC-ODBC桥接器,连接数据库的其他方式,查询Excel电子表格掌握:查询记录,更新记录,添加记录,删除记录应用:分页显示记录,使用同步连接教学重点教学难点:JDBC-ODBC桥接器,查询记录,更新记录,添加记录,删除记录,分页显示记录,使用同步连接教学方法:教学手段:多媒体教学和计算机程序演示教学小结:(见教学进程)作业与思考:见课后习题课后记载:2教学进程第5章JSP中使用数据库在JSP中可以使用Java的JDBC技术,实现对数据库中表记录的查询、修改和删除等操作。JDBC技术在JSP开发中占有很重要的地位。JDBC(JavaDataBaseConnectivity)是Java数据库连接API。简单地说,JDBC能完成三件事:(1)与一个数据库建立连接,(2)向数据库发送SQL语句,(3)处理数据库返回的结果。JDBC在设计上和ODBC很相似。JDBC和数据库建立连接的一种常见方式是建立起一个JDBC─ODBC桥接器。由于ODBC驱动程序被广泛的使用,建立这种桥接器后,使得JDBC有能力访问几乎所有类型的数据库。JDBC也可以直接加载数据库驱动程序访问数据库,我们将在2.8节讨论。如果使用JDBC─ODBC桥接器访问数据库,事先必须设置数据源。5.1数据源假设要访问SQLServer服务器上的pubs数据库,该库有一个表students,如图5.1、5.2所示。图5.1SQLServer数据库pubs图5.2表students3为连接一个SQL-Server数据库,我们需设置一个数据源。在控制面板选择ODBC数据源,如图5.3所示。双击ODBC数据源图标。出现如图5.4所示界面,图5.4中显示了用户已有的数据源的名称。选择“用户DSN”,点击add按钮,增加新的数据源。如图5.5所示:为新增的数据源选择驱动程序,因为要访问SQLServer数据库,选择SQLServer,点击完成按钮(为数据源选择了驱动程序),出现设置数据源具体项目的对话框,如图5.6所示。在名称栏里为数据源起一个你自己喜欢的名字,这里我们起的名字是sun(当然,如果你喜欢的话,可以把名字叫做moon.)。这个数据源就是指某个数据库(将来随着计算机的进步,我们也可能有能力把数据源设成是一个卫星上来的信号)。在“你想连接哪个SQLServer?”栏中选择或输入一个数据库服务器,这里我们选择了网络上的另一台机器:Ping。图5.3选择配置ODBC数据源图5.4用户已有的数据源4单击“下一步”出现图5.7画面,选择连接SQLServer的ID。在图5.7的对话框中,选择“使用用户输入登录标识号和密码的SQLServer验证”选项,在这里我们选择用户名为sa(不需要密码),单击“下一步”出现如图5.8所示的选择数据库的对话框。选中“改变默认的数据库为”复选框,在下拉菜单里,我们选择用户sa有权限操作的数据库pubs。单击“下一步”出现完成数据源设置的对话框如图5.9。图5.5为新增的数据源选择驱动程序图5.6设置数据源的名字和所在服务器图5.7选择连接SQLServer的ID5在图5.9中,单击“完成”出现你所配置的数据源的信息窗口,如图5.10所示。点击“测试数据源”按钮,如果正常就会出现数据源设置成功的窗口,如图5.11所示。图5.8选择数据库图5.9完成数据源设置图5.10数据源信息65.2JDBC-ODBC桥接器现在你可以这样的直观理解:我们有了一个数据源,这个数据源就是一个数据库。为了要连接到这个数据库,需要建立一个JDBC─ODBC桥接器,即加载桥接器驱动程序。Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);这里,Class是包java.lang中的一个类,该类通过调用它的静态方法forName就可以建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,所以建立桥接器的标准是:try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){}5.3查询记录要查询数据库中的记录,必须和数据库建立连接,由于使用的是JDBC-ODBC方式访问数据库,那么就要与数据源建立连接。(1)连接到数据库首先使用包java.sql中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象:Connectioncon=DriverManager.getConnection(jdbc:odbc:数据源名字,loginname,password);假如您没有为数据源设置loginname和password,那么连接形式是:Connectioncon=DriverManager.getConnection(jdbc:odbc:数据源名字,,);图5.11测试数据源7与数据库pubs(它就是数据源sun)建立连接,格式如下:try{Connectioncon=DriverManager.getConnection(jdbc:odbc:sun,sa,);}catch(SQLExceptione){}这样就建立了到数据库pubs的连接。(2)向数据库发送SQL语句。首先使用Statement声明一个SQL语句对象,然后通过刚才创建的连接数据库的对象con调用方法createStatment()创建这个SQL语句对象。try{Statementsql=con.createStatement();}catch(SQLExceptione){}(3)处理查询结果有了SQL语句对象后,这个对象就可以调用相应的方法实现对数据库中表的查询和修改。并将查询结果存放在一个ResultSet类声明的对象中,也就是说SQL语句对数据库的查询操作将返回一个ResultSet对象:ResultSetrs=sql.executeQuery(SELECT*FROM成绩表);ResultSet对象是以统一形式的列组织的数据行组成。ResultSet对象一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,ResultSet对象可以使用getxxxx方法获得字段值,将位置索引(第一列使用1,第二列使用2等等)或字段名传递给getxxxx方法的参数即可。ResultSet类的若干方法booleannext()bytegetByte(intcolumnIndex)DategetDate(intcolumnIndex)doublegetDouble(intcolumnIndex)floatgetFloat(intcolumnIndex)intgetInt(intcolumnIndex)longgetLong(intcolumnIndex)StringgetString(intcolumnIndex)bytegetByte(StringcolumnName)DategetDate(StringcolumnName)8doublegetDouble(StringcolumnName)floatgetFloat(StringcolumnName)intgetInt(StringcolumnName)longgetLong(StringcolumnName)StringgetString(StringcolumnName)5.3.1顺序查询使用结果集Result的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。在下面的例子1中,我们查询数据库pubs(数据源sun)中students表里的包含全部字段的记录。例子1(效果如图5.12所示)Example5_1.jsp:%@pagecontentType=text/html;charset=GB2312%%@pageimport=java.sql.*%HTMLBODY%Connectioncon;Statementsql;ResultSetrs;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){}try{con=DriverManager.getConnection(jdbc:odbc:sun,sa,);sql=con.createStatement();rs=sql.executeQuery(SELECT*FROMstudents);%TableBorderTRTHwidth=100学号THwidth=100姓名THwidth=50数学成绩图5.12顺序查询9THwidth=50英语成绩THwidth=50物理成绩/TR%while(rs.next()){out.print(TR);out.print(TD+rs.getString(1)+/TD);out.print(TD+rs.getString(2)+/TD);out.print(TD+rs.getInt(数学成绩)+/TD);out.print(TD+rs.getInt(英语成绩)+/TD);out.print(TD+rs.getInt(物理成绩)+/TD);out.print(/TR);}out.print(/Table);con.close();}catch(SQLExceptione1){}%/BODY/HTML在下面的例子2中查询“英语成绩”字段值大于80的记录,但只显示“姓名”字段(第2个字段)和“英语成绩”字段。例子2(效果如图5.13所示)Example5_2.jsp:%@pagecontentType=text/html;charset=GB2312%%@pageimport=java.sql.*%HTMLBODY%Connectioncon;Statementsql;ResultSetrs;try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptione){}try{con=DriverManager.getConnection(jdbc:odbc:sun,sa,);sql=con.createStatement();rs=sql.executeQuery(SELECT*FROMstudentsWHERE英语成绩=80);out.print(TableBorder);out.print(TR);10out.print(THwidth=100+姓名);out.print(THwidth=50+英语成绩);out.print(/TR);while(rs.next()){out.print(TR);out.print(TD+rs.getString(2)+/TD);out.print(TD+rs.getInt(英语成绩)+/TD);out.print(/TR);}out.print(/T
本文标题:第5章-JSP中使用数据库
链接地址:https://www.777doc.com/doc-3269537 .html