版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 JSP中使用数据库中使用数据库 本章主要内容本章主要内容7.1 MySQL数据库管理系统数据库管理系统7.2 JDBC7.3 连接连接MySQL数据库数据库7.4 查询记录查询记录7.5 更新、添加与删除记录更新、添加与删除记录7.6 用结果集操作数据库中的表用结果集操作数据库中的表7.7 预处理语句预处理语句7.8 事务事务7.9 分页显示记录分页显示记录7.10 常见数据库连接常见数据库连接7.11 标准化考试标准化考试 7.1 MySQL数据库管理系统数据库管理系统 MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Commu
2、nity Edition)是世界上最流行的免费下载的开源数据库管理系统。 目前许多Web开发项目都选用MySQL,其主要原因是MySQL的社区版(MySQL Community Edition)性能卓越,满足许多Web应用已经绰绰有余,而且MySQL的社区版是开源数据库管理系统、可以降低软件的开发和使用成本. 具体安装方式请见:具体安装方式请见:mysql安装说明安装说明.ppt 7.1.2 建立数据库建立数据库 启动MySQL数据库服务器后,就可以建立数据库,并在数据库中创建表。1. 使用MySql自带的MySql workbench来创建和管理数据库。 1、连接数据库引擎,打开workbe
3、nch后双击红线标示区域 在弹出的对话框中输入密码 成功连接后即可看到如图所示的界面 补充内容: Workbench使用简单说明: http:/ (1) 创建数据库创建数据库 一、在任意一个Query界面中输入如下语句并执行 create database 数据库名; 二、在工具栏中点击红线标示按钮通过向导创建 使用向导创建数据库: 注意:MySQL中CREATE DATABASE和CREATE SCHEMA的作用一样 (2) 为数据库建表为数据库建表 一、通过语句创建在数据库Book建立一个名字为bookList表:CREATE TABLE bookList ( ISBN varchar(1
4、00) not null , name varchar(100) CHARACTER SET gb2312, price float , PRIMARY KEY (ISBN); 二、通过向导创建 点击右图红线标示区域的菜单项 看到如图所示界面后填写表名及列名、列类型等信息。填写完毕点击“Apply”按钮数据库的备份/还原 在左侧面板中选择management面板,选中如图红线标示的选项即可开始备份 在如右图所示的向导中选择需要备份的数据库,更改导出的文件存放位置即可开始导出 选择如右图红线标示的位置即可开始还原数据库。 注意:如果需要将备份的数据库恢复至另一个没有创建过该数据库的服务器上时,应
5、先执行create database 数据库名的代码创建该数据库,之后再选择还原操作,因为workbench在备份的时候不备份数据库的创建命令。数据库的相关查询语句 插入记录的SQL语句: insert into bookList values(7-302-01465-5,高等数学高等数学,28.67); 查询记录的SQL语句 select * from bookList; 小技巧:使用小技巧:使用workbench输入输入sql命令时,按住命令时,按住ctrl键,滚动键,滚动鼠标的滑轮可以调节字体大小鼠标的滑轮可以调节字体大小 ( (3)导入)导入.sql文件中的文件中的SQL语句语句 可以
6、事先将需要的SQL语句保存在一个扩展名是.sql的文本文件中,在workbench中导入并执行.在workbench中选中下图中红线标示的按钮,即可打开外部sql文件。 use 数据库名;drop table carList ;create table carList(number char(60) CHARACTER SET gb2312 not null,name char(50) CHARACTER SET gb2312 ,price float,year date,PRIMARY KEY(number);insert into carList values(加A89CQ8,奔驰,820
7、000,2015-12-26);insert into carList values(洲C12456,宝马,620000,2015-10-10);select * from carList;group.sql文本文件的内容如下:文本文件的内容如下: (4)删除数据库或表)删除数据库或表删除数据库的命令删除数据库的命令:drop database ,例如:删除名为tiger的数据库: drop database tiger;删除表的命令删除表的命令:drop table ,例如,使用book数据库后,执行 drop table booklist;将删除book数据库中的bookList表。补充练
8、习 创建学生信息表表名表名Student主键主键StudentNo列名列名数据类型数据类型是否允许为是否允许为空空默认值默认值描述描述StudentNonvarchar(50)主键主键学号学号LoginPwdnvarchar(20)“123456”密码密码StudentNamechar(50)姓名姓名Sexchar(2)性别性别GradeIdint所在年级所在年级Phonenvarchar(255)联系电话联系电话Addresschar(255)允许允许“学生宿舍学生宿舍”现住址现住址BornDatetext允许允许出生日期出生日期Emailnvarchar(50)允许允许电子邮件电子邮件创建
9、表: drop table student;create table student(studentno nvarchar(50),loginpwd nvarchar(20) default123456 not null,studentname char(50) char set gb2312 not null,sex char(2) char set gb2312 not null,gradeid int not null,phone nvarchar(20) not null,address char(255) char set gb2312 default学生宿舍,borndate te
10、xt char set gb2312,email nvarchar(50),primary key(studentno);插入数据 INSERT INTO person.student (studentno, studentname, sex, gradeid, phone, address, borndate, email) VALUES (s111, 李四, 男, 1, 1234634598748, 河南, 1991年11月9日, jdgdkjgjda.adjl); 查询所有的学生信息 Select * from Student; 查询学生学号为s111的学生信息 Select * fro
11、m Student where studentNo=s111; 查询姓名为zhang的学生 Select * from student where studentName like张%; 对学生信息按照学号排序 Select * from student order by studentNo asc/desc; 按照学生的所属地分组(group_concat函数用法) Select address,group_concat(studentname) from student group by address; 对分组之后的数据进行再次筛选 筛选出北京市市的学生 Select address,g
12、roup_concat(studentname) from student group by address having address =河南; 去掉学生姓名相同的信息 select distinct studentName from student; 7.2 JDBC JDBC(Java DataBase Connectivity)提供了访问数据库的API,即由一些Java类和接口组成,是Java运行平台的核心类库中的一部分。在JSP中可以使用JDBC实现对数据库中表的记录的查询、修改和删除等操作。如图7.16所示:我们经常使用JDBC进行如下的操作:1. 与一个数据库建立连接。2. 向
13、已连接的数据库发送SQL语句。3. 处理SQL语句返回的结果。7.3 连接连接MySQL数据库数据库 使用JDBC-数据库驱动程序方式和数据库建立连接需要经过2个步骤:1. 加载加载JDBC-数据库驱动程序数据库驱动程序2. 和指定的数据库建立连接和指定的数据库建立连接如图7.17所示意 7.3.1加载加载JDBC-数据库驱动程序数据库驱动程序加载MySQL的JDBC-数据库驱动程序代码如下:try Class.forName(com.mysql.jdbc.Driver);catch(Exception e) 7.3.2 建立连接建立连接_1 为了能和MySQL数据库服务器管理的数据库建立连接
14、,必须保证该MySQL数据库服务器已经启动,如果没有更改过MySQL数据库服务器的配置,那么该数据库服务器占用的端口是3306。假设MySQL数据库服务器所驻留的计算机的IP地址是使用 Connection getConnection(String,String,String)方法建立连接的代码如下:try String uri = jdbc:mysql:/ :3306/warehouse; String user =root; String password =99; con = DriverManager.getConnection(ur
15、i,user,password); catch(SQLException e) System.out.println(e); 7.3.2建立连接建立连接_2 使用Connection getConnection(String) 方法建立连接的代码如下:try String url= jdbc:mysql:/:3306/warehouse?user=root&password=99; con = DriverManager.getConnection(url); catch(SQLException e) System.out.println(e);如果root
16、用户没有设置密码,那么将上述url中的&password=99更改为:&password= 7.3.2建立连接建立连接_3 避免操作数据库出现中文乱码(细节见稍后的7.3.3),那么需要使用 Connection getConnection(String) 方法建立连接,连接代码是(假设用户是root,其密码是99):String url= jdbc:mysql://warehouse?+ user=root&password=99&characterEncoding=gb2312;con = DriverManager.getConnecti
17、on(url); 用户要和连接MySQL驻留在同一计算机上,使用的IP地址可以是或localhost。另外,由于3306是MySQL数据库服务器的默认端口号,链接数据库时允许应用程序省略默认的3360端口号. 7.3.3 MySQL乱码解决方案乱码解决方案_11数据库和表使用支持中文的字符编码 在创建数据库时指定数据库使用的字符编码: create 数据库名数据库名 CHARACTER SET字符编码字符编码 创建表时,可以指定某个字段使用的字符编码: 字段名字段名 类型类型 CHARACTER SET字符编码字符编码例如:Create database people CHA
18、RACTER SET gb2312create table myList (id int, name varchar(100) CHARACTER SET gb2312,PRIMARY KEY (id); 7.3.3 MySQL乱码解决方案乱码解决方案_22连接数据库支持中文编码连接数据库支持中文编码JSP中连接MySQL数据库时,需要使用Connection getConnection(java.lang.String) 方法建立连接,而且向该方法参数传递的字符串是:jdbc:mysql:/地址/数据库?user=用户&password=密码 &characterEncodi
19、ng=gb2312; 例7_1:一个简单的JSP页面,该页面中的Java程序片代码负责加载JDBC-驱动程序,并连接到数据库warehouse,查询product表中全部记录(见7.1节曾建立的warehouse数据库),页面运行效果如图7.18。 参考代码:% Connection con; Statement sql; ResultSet rs; try Class.forName(com.mysql.jdbc.Driver); catch(Exception e) out.println(忘记把MySQL数据库的JDBC-数据库驱动程序复制到JDK的扩展目录中); try String
20、uri= jdbc:mysql://warehouse; String user=root; String password=1234; con=DriverManager.getConnection(uri,user,password); /也可以写成con=DriverManager.getConnection(uri+?user=root&password=); sql=con.createStatement(); rs=sql.executeQuery(SELECT * FROM product ); out.print(); out.print(); out
21、.print(+产品号); out.print(+名称); out.print(+生产日期); out.print(+价格); out.print(); while(rs.next() out.print(); out.print(+rs.getString(1)+); out.print(+rs.getString(2)+); out.print(+rs.getDate(madeTime)+); out.print(+rs.getFloat(price)+); out.print() ; out.print(); con.close(); catch(SQLException e) out.
22、print(e); % 7.4 查询记录查询记录 和数据库建立连接后,就可以使用JDBC提供的API和数据库交互信息。比如查询、修改和更新数据库中的表等。 JDBC和数据库表进行交互的主要方式是使用SQL语句(其它方式见7.8节),JDBC提供的API可以将标准的SQL语句发送给数据库,实现和数据库的交互。 7.4.1 结果集与查询结果集与查询_11SQL查询语句与结果集查询语句与结果集让连接对象con调用方法createStatement()创建这个SQL语句对象:try Statement sql=con.createStatement(); catch(SQLException e )
23、System.out.println(e); 对于 ResultSet rs=sql.executeQuery(SELECT * FROM product);内存的结果集对象rs的列数是4列。 7.4.1 结果集与查询结果集与查询_2对于ResultSet rs=sql.executeQuery(SELECT name,price FROM product);内存的结果集对象rs只有两列,第1列是name列、第2列是price列。 ResultSet结果集一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,ResultSet结果集可以使用getXxx方法获得字段值(列值
24、),将位置索引(第一列使用1,第二列使用2等等)或列名传递给getXxx方法的参数即可 表7.1 ResultSet类的若干方法 7.4.1 结果集与查询结果集与查询_32结果集的列名与列的数目结果集的列名与列的数目 程序查询的时候。为了代码更加容易维护,希望知道数据库表的字段(列)的名字以及表的字段的个数,那么一个办法是使用返回到程序中的结果集来获取相关的信息。假如结果集是rs(1) 得到元数据对象metaData ResultSetMetaData metaData = rs.getMetaData();(2)得到结果集的列的个数,即共有几列 int columnCount = metaD
25、ata.getColumnCount();(3)结果集rs中的第i列的名字: String columnName = metaData.getColumnName(i); 7.4.2 随机查询随机查询_1使用下述方法获得一个Statement对象:Statement stmt=con.createStatement(int type, int concurrency);type取值: ResultSet.TYPE_SCROLL_INSENSITIVE或 ResultSet.TYPE_SCROLL_SENSITIVEConcurrency取值: ResultSet.CONCUR_READ_ONL
26、Y或 ResultSet.CONCUR_UPDATABLE 7.4.2 随机查询随机查询_2 根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSet re=stmt.executeQuery(SQL语句语句);滚动查询经常用到ResultSet的下述方法:u public void first():将游标移到结果集的第一行。u public void last():将游标移到结果集的最后一行。u public int getRow():得到当前游标所指行的行号,行号从1开始,如果结果集没有行,返回0u public boolean absolut
27、e(int row):将游标移到参数row指定的行号。 7.4.3 条件查询条件查询select from 表表 where 字段字段 满足的条件满足的条件例如: select * from product where price 2000 and price5000select * from product where name = javaselect * from product where name like %里% 例7_2:使用MVC模式(有关知识见第6章)显示warehouse数据库product表中price字段值大于某个值的记录。 模型(Javabean)Javabean模型
28、Example7_2_Bean.java负责存储 查 询 到 的 记 录 , 在 本 例 子 中Example7_2_Bean创建的Javabean模型的id是resultBean,scope取值是request。视图(JSP页面) 视图部分由2个JSP页面构成,其中example7_2.jsp页面负责提供输入数据的视图,即用户可以在该页面输入 查 询 的 价 格 条 件 , 然 后 将 数 据 提 交 给 名 字 是queryByConditionServlet的servlet。 queryByConditionServlet负责查询数据库,并将结果存储到id为resultBean的Java
29、bean数据模型中,然后请求视图中的showRecord.jsp显示数据模型resultBean中的数据。 example7_2.jsp和showRecord.jsp的效果如图7.19(a)和图7.19(b)所示控制器(servlet) E x a m p l e 7 _ 2 _ S e v l e t 负 责 创 建 名 字 是 queryByConditionServlet的servlet(见例子2前面web.xml文件的有关内容)。 queryByConditionServlet查询warehouse数据库的product表中满足价格条件的记录,将结果存放到id是resultBean的J
30、avabean数据模型中, 然后用转发的方法请求showRecord.jsp显示resultBean中的数据。 7.5 更新、添加与删除记录更新、添加与删除记录1更新更新Statement对象调用方法:对象调用方法:public int executeUpdate(String sqlStatement);实现对数据库表中记录的字段值的更新。例如,实现对数据库表中记录的字段值的更新。例如,executeUpdate(UPDATE product SET price = 6866 WHERE name=海尔电视机海尔电视机);2添加Statement对象调用方法:public int execu
31、teUpdate(String sqlStatement);实现向数据库表中添加新的记录。例如,executeUpdate(INSERT INTO students VALUES (012,神通手机,2015-2-26,2687);3删除Statement对象调用方法:public int executeUpdate(String sqlStatement);删除数据库表中的记录。例如:executeUpdate(DELETE FROM product WHERE number = 888 );例7_3:下面的例子3使用MVC模式(有关知识见第6章)向warehouse数据库product表中
32、插入录。 模型(Javabean) J a v a b e a n 模 型 例 子 2 中 的Example7_2_Bean.java完全相同,创建的Javabean模型的id是resultBean,scope取值是request。视图(JSP页面) 视 图 部 分 由 2 个 J S P 页 面 构 成 , 一 个 是example7_3.jsp,另一个是例子2中的showRecord.jsp,其中example7_3.jsp页面负责提供输入新记录提交给名字是insertServlet的servlet。 insertServlet负责将记录插入到数据库的表中,然后 查 询 数 据 库 的 表
33、 , 并 将 查 询 结 果 存 储 到 i d 为resultBean的Javabean数据模型中,然后请求视图中的showRecor.jsp显示数据模型resultBean中的数据。example7_3.jsp和showRecord.jsp的效果如图7.20(a)和图7.20(b)所示。 图7.20_a 图7.20_b 控制器(servlet)Example7_3_Sevlet负责创建名字是insertServlet的servlet(见例子3前面web.xml文件的有关内容)。insertServlet负责向数据库warehouse的product表插入记录,并查询product表中的全部
34、记录,将结果存放到id是resultBean的Javabean数据模型中,然后用转发的方法请求showRecod.jsp显示resultBean中的数据。为了避免出现中文乱码,数据库的连接方式采用:“jdbc:mysql:/地址/数据库?user=用户&password=密码 &characterEncoding=gb2312; 7.6用结果集操作数据库中的表用结果集操作数据库中的表 尽管可以用SQL语句对数据库中表进行更新、插入操作,但也可以使用内存中ResultSet结果集对底层数据库表进行更新和插入操作(这些操作由系统自动转化为相应的SQL语句),优点是不必熟悉有关更新、
35、插入的SQL语句,而且方便编写代码,缺点是,必须要事先返回结果集。 7.6.1 更新记录更新记录使用结果集更新数据库表中第使用结果集更新数据库表中第n行记录中某列的值的步骤是:行记录中某列的值的步骤是:1.结果集rs的游标移动到第n行 rs.absolute(n);2.结果集将第n行的某列的列值更新例如 更新列名是columnName的日期值是x指定的值: updateDate(String columnName, Date x) 3.更新数据库中的表最后,结果集调用updateRow()方法用结果集中的第n行更新数据库表中的第n行记录。 以下代码片段更新product表中的第3行记录的nam
36、e列(字段)的值。rs.absolute(3);rs.updateString(name, IBM PC);rs.updateRow(); 7.6.2 插入记录插入记录使用结果集向数据库表中插入(添加)一行记录步骤是:1.结果集rs的游标移动到插入行 rs.moveToInsertRow();2.更新插入行的列值 例如:rs.updateString(1, c002);rs.updateString(2, IBM iPad);rs.updateDate(3,Date();rs.updateDouble(4, 5356);3. 插入记录最后,结果集调用insertRow()方法用结果集中的插入行
37、向数据库表中插入一行新记录。 例例7_4:7_4:使用MVC模式(有关知识见第6章)向warehouse数据库product表中插入录,但和前面的例子3不同的是,例子4不直接使用SQL语句,而是使用结果集操作数据库中的表。 模型(Javabean) J a v a b e a n 模 型 与 例 子 2 中 的Example7_2_Bean.java完全相同,创建的Javabean模型的id是resultBean,scope取值是request。视图(视图(JSP页面)页面) 视图部分由2个JSP页面构成,一个是example7_4.jsp,另一个是例子2中的showRecord.jsp。 其
38、中example7_4.jsp页面负责提供输入新记录的视图,即用户可以在该页面输入要添加的记录,然后将要添加的记录提交给名字是insertBySetServlet的servlet。 insertBySetServlet负责将记录插入到数据库的表中,然后查询数据库的表,并将查询结果存储到id为resultBean的Javabean数据模型中,然后请求视图中的showRecor.jsp显示数据模型resultBean中的数据。example7_4.jsp和showRecord.jsp的效果如图7.21(a)和图7.21(b)所示。 图7.21a 图7.21b控制器(控制器(servlet) Exa
39、mple7_4_Sevlet负责创建名字是insertBySetServlet的s e r v l e t ( 见 例 子 4 前 面 w e b . x m l 文 件 的 有 关 内 容 ) 。insertBySetServlet使用结果集操作数据库,并向数据库warehouse的product表插入记录,然后查询product表中的全部记录,将结果存放到id是resultBean的Javabean数据模型中,然后用转发的方法请求showRecod.jsp显示resultBean中的数据. 为了避免出现中文乱码,数据库的连接方式采用:jdbc:mysql:/地址/数据库?user=用户&a
40、mp;password=密码&characterEncoding=gb2312; 7.7 预处理语句预处理语句 Java提供了更高效率的数据库操作机制,就是PreparedStatement对象,该对象被习惯地称作预处理语句对象。本节学习怎样使用预处理语句对象操作数据库中的表。 7.7.1 预处理语句优点预处理语句优点 Connection连接对象con调用prepareStatement(String sql)方法:PreparedStatement pre=con.prepareStatement(String sql);对参数sql指定的SQL语句进行预编译处理.那么pre调用下
41、列方法都可以使得该底层内部命令被 数据库执行: ResultSet executeQuery()boolean execute()int executeUpdate() 只要编译好了PreparedStatement对象pre,那么pre可以随时地执行上述方法,提高了访问数据库的速度。例例7_5:7_5:使用预处理语句来查询warehouse数据库中product表的全部记录(有关product表见7.1.2节), 7.7.2 使用通配符使用通配符在对SQL进行预处理时可以使用通配符“?”来代替字段的值。例如:prepareStatement pre=con.prepareStatement(
42、SELECT * FROM product WHERE price ? );先调用相应的方法设置通配符“?”代表的具体值,比如:pre.setDouble(1,6565);指定上述预处理语句pre中第1个通配符“?”代表的值是6565。 通配符按着它们在预处理的“SQL语句”中从左至右依次出现的顺序分别被称做第1个、第2个 第m个通配符。预处理语句设置通配符“?”的值的常用方法有:void setDate(int parameterIndex,Date x)void setDouble(int parameterIndex,double x)void setFloat(int paramete
43、rIndex,float x) 例例7_6:7_6:使用MVC模式(有关知识见第6章)更新warehouse数据库product表中的记录,但和前面的例子不同的是,这里使用了预处理语句。 模型(Javabean) Javabean模型与例子2中的Example7_2_Bean.java完全相同,创建的Javabean模型的id是resultBean,scope取值是request。视图(JSP页面) 视图部分由2个JSP页面构成,一个是example7_6.jsp,另一个是例子2中的showRecord.jsp(showRecod.jsp的代码见例子2的视图部分)。example7_6.jsp
44、页面将要更新的记录,提交给名字是preparedServlet的servlet。preparedServlet负责更新数据库表中的记录,然后查询数据库的表,并将查询结果存储到id为resultBean的Javabean数据模型中,然后请求视图中的showRecor.jsp(见例子2中的视图部分)显示数据模型resultBean中的数据。example7_6.jsp和showRecord.jsp的效果如图7.22(a)和图7.22(b)所示控制器(servlet) Example7_6_Servlet负责创建名字是insertServlet的servlet(见例子3前面web.xml文件的有关内
45、容)。insertServlet负责向数据库warehouse的product表插入记录,并查询product表中的全部记录,将结果存放到id是resultBean的Javabean数据模型中,然后用转发的方法请求showRecod.jsp显示resultBean中的数据。为了避免出现中文乱码,数据库的连接方式采用:“jdbc:mysql:/地址/数据库?user=用户&password=密码 &characterEncoding=gb2312; 7.8 事务事务 事务由一组SQL语句组成,所谓“事务处理”是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。
46、事务处理步骤如下:1连接对象使用setAutoCommit(boolean autoCommit)方法将参数autoCommit取值为false来关闭自动提交模式:con.setAutoCommit(false);2commit()方法 con调用commit()方法就是让事务中的SQL语句全部生效。3rollback()方法 只要事务中任何一个SQL语句没有生效,就抛出SQLException异常。在处理SQLException异常时,必须让con调用rollback()方法,其作用是撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作.例7_7:在bank数据库中创建了表
47、user表,表的字段及属性如下:name(文本文本) userMoney(双精度型双精度型) 例子7使用了事务处理,将user表中name字段是geng的userMoney的值减少50,并将减少的50增加到name字段是zhang的userMony属性值上。运行效果如图如图7.23. 图7.23返回返回 7.9 分页显示记录分页显示记录 可以使用二维数组table存放表的记录,即用二维数组table中的行(一维数组tablei)存放一条记录。假设table存放了m行记录,准备每页显示n行,那么,总页数的计算公式:1. 如果m除以n的余数大于0,总页数等于m除以n的商加1;2. 如果m除以n的余
48、数等于0,总页数等于m除以n的商。 总页数总页数=(=(m%nm%n)=0?(m/n):(m/n+1);)=0?(m/n):(m/n+1); 如果准备显示第p页的内容,应当从tablel第 (p-1)*n行开始,连续输出行开始,连续输出n行行(最后一页可能不足n行)。 例例7_87_8使 用 M V C 模 式 ( 有 关 知 识 见 第 6 章 ) 分 页 显 示warehouse数据库product表中的记录。 模型(Javabean) Javabean模型的id是pageBean(Example7_8_Bean创建),生命周期是session,用于存储数据库中的记录。视图(JSP页面)视
49、图部分由2个JSP页面构成,其中example7_8.jsp页面负责提供输入数据的视图,即用户可以在该页面输入数据库的名、表名、密码等信息,然后提交给名字是queryAllServlet的servlet。queryAllServlet负责查询数据库,并将结果存储到id为pageBean的 J a v a b e a n 数 据 模 型 中 , 然 后 请 求 视 图 中 的example7_8_pageShow.jsp页面负责分页显示pageBean的数据。example7_8.jsp和example7_8_pageShow.jsp的效果如图7.24(a)和图7.24(b)所示。 图7.24_
50、a返回返回控制器(控制器(servlet)Example7_8_Servlet负责创建名字是queryAllServlet的servlet(见例子8前面web.xml文件的有关内容)。queryAllServlet查询数据库表中的全部记录,将结果存放到id是pageBean的Javabean数据模型中,然后用转发的方法请求example7_8_pageShow.jsp显示pageBean中的数据。 7.10 常见数据库连接常见数据库连接 7.10.1 .连接连接Microsoft SQL Server数据库数据库try Class.forName(com.microsoft.sqlserver
51、.jdbc.SQLServerDriver);catch(Exception e)try String uri= jdbc:sqlserver:/:1433;DatabaseName=warehouse; String user=sa; String password=dog123456; con=DriverManager.getConnection(uri,user,password); catch(SQLException e) System.out.println(e); 7.10.2 连接Oracle数据库Class.forName(oracle.jdbc.
52、driver.OracleDriver).newInstance(); Class.forName(oracle.jdbc.driver.OracleDriver).newInstance(); Connection con=DriverManager.getConnection( jdbc:oracle:thin:主机:端口号:数据库名,用户名,密码);例如:String user=scott;String password=tiger;con = DriverManager.getConnection (jdbc:oracle:thin::1521:oracle9i,user,password); 7.10.3 连接Microsoft Access数据库Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection con = DriverManager.getConnection(jdbc:odbc:数据源名字“, loginName, password ) 7.11 标准化考试标准化考试 我们很熟悉标准化考试,就是只需在给出的选择中选出正确的答案。在本节的标准化考试中,用户只能顺序的回答每个随机抽取到的题目,即回答一个题目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【2024考研】全国统考数学一历年真题(重难点专项突破)
- 2023考研信号与系统习题集|超清扫描版
- 2022年全国统考数学一期中试卷(历年真题+模拟)
- 2026年中职工业机器人(编程综合实操)试题及答案
- 广州市从化市2026年数学四年级第一学期期末复习检测试题含解析
- 榆林市清涧县2026-2027学年数学三上期末学业质量监测试题含解析
- 2026年中职护理(妇产科护理学)试题及答案
- 吉林省长春汽车经济技术开发区第一小学2026年数学三上期末质量跟踪监视试题含解析
- 2025年天津市建材家居行业自动化仓库新建可行性研究报告
- 可编程控制器程序设计师岗位培训试题及答案
- 2026人工智能辅助药物研发进展及商业化前景预测报告
- 换电重卡行业深度报告
- LY/T 2010-2012自然保护区生态旅游设施建设通则
- JJF 1919-2021全国专业计量技术委员会考核规则
- GB/T 32301-2015航天器包装、运输通用要求
- GB/T 307.4-2012滚动轴承公差第4部分:推力轴承公差
- 2014年高考全国卷1新课标1语文试卷及答案Word
- 《噪声污染及控制》课件
- 脊柱内镜并发症-康健课件
- 2023年徐州工业职业技术学院单招综合素质考试笔试题库及答案解析
- 汽车车身碰撞估损全套课件
评论
0/150
提交评论