收藏 分享(赏)

第7章 在JSP中使用数据库.ppt

上传人:hyngb9260 文档编号:8369475 上传时间:2019-06-23 格式:PPT 页数:55 大小:3.40MB
下载 相关 举报
第7章 在JSP中使用数据库.ppt_第1页
第1页 / 共55页
第7章 在JSP中使用数据库.ppt_第2页
第2页 / 共55页
第7章 在JSP中使用数据库.ppt_第3页
第3页 / 共55页
第7章 在JSP中使用数据库.ppt_第4页
第4页 / 共55页
第7章 在JSP中使用数据库.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、2019/6/23,第7章 在JSP中使用数据库,本章导读,1. 知识点:掌握怎样在JSP中使用JDBC实现数据库的连接、查询、修改等操作 。,2. 重点:掌握连接数据库的常用方式:JDBC-ODBC桥接器方式和加载Java数据库驱动程序方式。,4. 关键实践:编写JSP页面,使用JavaBean实现数据库表的分页查询。,3. 难点:怎样实现数据库表的分页查询 。,7. 2 JDBC,7.3数据库连接的常用方式,7.4查询操作,7.5更新、添加与删除操作,7. 6使用预处理语句,7.7基于CachedRowSet分页显示记录,7.8 常见数据库的连接,7.1 SQL Server 2000数

2、据库管理系统,2019/6/23,Web应用程序最常用的数据管理方式就是使用数据库,数据库已经成为Web程序开发的一个重要组成部分。本章将学习在JSP中怎样使用数据库。本章大部分例子采用的模式是JSP+JavaBean模式,即JSP页面调用bean来完成对数据库的操作,如图7.1所示。为了便于教学,我们使用的数据库管理系统是SQL Server 2000。,概述,2019/6/23,7.1 SQL Server 2000数据库管理系统,SQL Server 2000是一个网络数据库管理系统,也简称为数据库服务器。 1. 启动SQL Server 2000为了能让Tomcat服务器上的Web应用

3、程序访问SQL Server 2000管理的数据库,必须启动SQL Server 2000提供的数据库服务器。,如果已经安装SQL Server 2000,可以用如下方式启动SQL Server 2000提供的数据库服务器:“开始”“程序”“Microsoft SQL Server”“服务器管理器”,出现如图7.2所示的窗口。,2019/6/23,2. 建立数据库,打开“企业管理器”,出现如图所示7.3界面。“数据库”目录下是已有的数据库的名称,右键单击“数据库”可以建立新的数据库,我们新建立的数据库名称是“Student”。,2019/6/23,3. 创建表,在数据库Student中创建名字

4、为score的表。打开“企业管理器”,选择“数据库”下的Student,在Student管理的“表”的选项上单击右键,创建新的用户表:score。score表的字段(属性)为: 学号(char),姓名(char),数学成绩(float),物理成绩(float),英语成绩(float) 其中,“学号”字段为主键,如图7.4和图7.5所示。,2019/6/23,7.2 JDBC,JDBC(Java DataBase Connectivity)是Java数据库连接API,它由一些Java类和接口组成。在JSP中可以使用JDBC实现对数据库中表记录的查询、修改和删除等操作。JDBC技术在JSP开发中占

5、有很重要的地位。我们经常使用JDBC进行如下操作: 与一个数据库建立连接 向已连接的数据库发送SQL语句 处理SQL语句返回的结果。使用JDBC时不需要知道底层数据库的细节,JDBC操作不同的数据库仅仅是连接方式上的差异而已。使用JDBC的应用程序一旦与数据库建立连接,就可以使用JDBC提供的API操作数据库,如图7.6所示。,2019/6/23,7.3 数据库连接的常用方式,应用程序必须首先与数据库建立连接,这也是与数据库交互信息所必须的。本节介绍常用的两种连接方式建立JDBC-ODBC桥接器和加载纯Java数据库驱动程序。,2019/6/23,JDBC和数据库建立连接的一种常见方式是建立起

6、一个JDBC-ODBC桥接器。ODBC(Open DataBase Connectivity) 驱动程序被广泛的使用,建立这种桥接器后,使得JDBC有能力访问几乎所有类型的数据库。如果使用JDBC-ODBC桥接器访问数据库,事先必须设置数据源,因为ODBC通过数据源来管理数据,所以必须将某个数据库设置成ODBC的一个数据源,如图7.7所示。使用JDBC-ODBC桥接器方式与数据库建立连接,需要经过3个步骤:创建ODBC数据源。建立JDBC-ODBC桥接器。和ODBC数据源指定的数据库建立连接。假设应用程序所在的计算机要访问本地或远程的SQL Server 2000服务器上数据库,应用程序所在的

7、计算机负责设置数据源,即将本地或远程的SQL Server服务器上的数据库设置成自己要访问的数据源。,7.3.1 JDBC-ODBC桥接器,2019/6/23,图7.7 ODBC的数据源,2019/6/23,添加、修改或删除数据源选择“控制面板”“管理工具”“ODBC数据源”,双击ODBC数据源图标,出现如图7.8所示界面。选择“用户DSN”,就可以完成添加、修改或删除数据源。,1. 创建ODBC数据源-,2019/6/23,为数据源选择驱动程序在图7.8所示的界面上选择单击【添加】按钮,出现为新增的数据源选择驱动程序界面(如图7.9所示),因为要访问SQL Server数据库,选择SQL S

8、erver,然后单击【完成】按钮。,1. 创建ODBC数据源_,2019/6/23,数据源名称及所在位置在图7.9所示界面中单击【完成】按钮,将出现设置数据源具体项目的对话框,如图7.10所示。,1. 创建ODBC数据源_,在“名称”栏里为数据源起一个自己喜欢的名字,这里起的名字是mymoon。这个数据源就是指若干个数据库。在“你想连接哪个SQL Server?“栏中选择或输入一个数据库服务器,这里选择网络上的一台机器GXY。然后单击【下一步】按钮。,2019/6/23, 设置ID与密码在图7.10所示界面中单击【下一步】按钮,出现设置SQL Server的ID和密码的界面(如图7.11所示)

9、,选择“使用用户输入登录标识号和密码的SQL Server验证”选项,这里设置用户名为“sa”、密码为“sa”(安装SQL Server 2000数据库服务器时设置的用户和密码)。然后单击“下一步”按钮。,1. 创建ODBC数据源_,2019/6/23, 选择数据库在图7.12所示界面中选中“更改默认的数据库为”复选框,在其下拉菜单中选择用户sa有权限操作的Student数据库。当然,用户sa还可能有权操作其他数据库,这取决于SQL server 2000的有关设置,这里不再赘述。然后单击【下一步】按钮。,1. 创建ODBC数据源_,2019/6/23, 创建数据源在图7.13所示界面中单击【

10、完成】按钮,就创建了一个新的数据源mymoon。,1. 创建ODBC数据源_,2019/6/23,现在我们有了一个数据源mymoon,这个数据源就是一个数据库Student。为了连接这个数据库,首先要建立一个JDBC-ODBC桥接器:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);Class是包java.lang中的一个类,该类通过调用它的静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类来建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,因此捕获这个异常。所以建立桥接器的标准如下: try Class.f

11、orName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch(ClassNotFoundException e) ,2. 建立JDBC-ODBC桥接器,2019/6/23,编写连接数据库代码不会出现数据库的名称,只能出现数据源的名字。先使用java.sql包中的Connection类声明一个对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个连接对象:Connection con=DriverManager.getConnection(“jdbc:odbc:数据源名字“, “login name“,“ password “

12、); 为了能与数据源mymoon交换数据,建立Connection对象如下:Connection con=DriverManager.getConnection(“jdbc:odbc:mymoon“, “sa“,“sa“); 建立连接时应捕获SQLException异常: try Connection con=DriverManager.getConnection(“jdbc:odbc:mymoon“, “sa“,“sa“); catch(SQLException e) 这样就与数据源mymoon建立了连接。应用程序一旦与某个数据源建立连接,就可以通过SQL语句与该数据源所指定的数据库中的表交

13、互信息,如查询、修改、更新表中的记录。例7-1是一个简单的JSP页面,该页面中的Java程序片代码负责连接到数据源mymoon,查询score表中的全部记录。效果如图7.14所示。,3. 与ODBC数据源指定的数据库建立连接,2019/6/23,例题7-1 效果图7.14,2019/6/23,用Java语言编写的驱动程序称为纯Java驱动程序。JDBC提供的API通过将纯Java驱动程序转换为DBMS(数据库管理系统)所使用的专用协议来实现和特定的DBMS交互信息,简单地说,JDBC可以调用本地的纯Java驱动程序和相应的数据库建立连接,如图7.15所示。使用纯Java数据库驱动程序方式和数据

14、库建立连接需要经过两个步骤 加载纯Java驱动程序 指定的数据库建立连接。,7.3.2 使用纯Java数据库驱动程序,2019/6/23,使用纯Java驱动程序访问数据库不需要设置数据源,由于不依赖于ODBC,使得应用程序具有很好的移植性。目前,许多数据库厂商都提供了自己的相应的纯Java驱动程序。当使用纯Java驱动程序访问数据库时,必须要保证在连接数据库的应用程序所驻留的计算机上安装相应DBMS提供的纯Java驱动程序。 可以登录到http:/下载并安装Microsoft公司提供的驱动程序sqljdbc_1.1.1501.101_enu.exe,在安装目录的enu子目录中可以找到驱动程序文

15、件sqljdbc.jar,将该驱动程序复制到Tomcat服务器所使用的JDK的文件夹 jrelibext中,如D:jdk1.5jrelibext,或复制到Tomcat服务器安装目录的文件夹 commonlib中,如D:apache-tomcat-5.5.20commonlib。应用程序加载SQLServer驱动程序代码如下:try Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“).newInstance(); catch(Exception e) ,1. 加载纯Java驱动程序,2019/6/23,假设SQL Serve

16、r数据库服务器所驻留的计算机的IP地址是192.168.100.1,SQL Server数据库服务器占用的端口是1433。应用程序要与SQL Server数据库服务器管理的数据库Student建立连接,而有权访问数据库Student的用户的id和密码分别是sa、sa,那么建立连接的代码如下: try String uri= “jdbc:sqlserver:/192.168.100.1:1433;DatabaseName=Student“;String user=“sa“;String password=“sa“;con=DriverManager.getConnection(uri,user,

17、password); catch(SQLException e) 应用程序一旦与某个数据库建立连接,就可以通过SQL语句与该数据库中的表交互信息,如查询、修改、更新表中的记录。 注: 如果应用程序要连接SQL Server 2000服务器驻留在同一计算机上,使用的IP地址可以是127.0.0.1 如果应用程序无法与SQL Server 2000服务器建立连接,可能需要更新SQL Server 2000服务器,登录到http:/下载SQL Server 2000的补丁SQLsp4.rar,安装该补丁即可。例7-2是一个简单的JSP页面,该页面中的Java程序片代码负责加载SQLServer200

18、0的Java驱动程序,并连接到数据库Student,查询score表中的数学成绩大于80的全部记录。效果如图7.16所示。,2. 与指定的数据库建立连接,2019/6/23,例题7-2 效果图7.16,2019/6/23,7.4 查询操作_步骤 1,与数据库建立连接后,就可以使用JDBC提供的API和数据库交互信息,如查询、修改和更新数据库中的表等。JDBC与数据库表进行交互的主要方式是使用SQL语句,JDBC提供的API可以将标准的SQL语句发送给数据库,实现与数据库的交互。本书中后续的例子采用的数据库连接方式为JDBC-ODBC桥接器方式和使用纯Java驱动程序方式。使用的数据源的名字为m

19、ymoon,数据库为Student。 进行查询操作的具体步骤如下: (1)向数据库发送SQL查询语句首先使用Statement声明一个SQL语句对象,然后利用7.1节创建的连接对象con调用方法createStatment()创建这个SQL语句对象。try Statement sql=con.createStatement(); catch(SQLException e ) ,2019/6/23,7.4 查询操作_步骤 2,(2)处理查询结果有了SQL语句对象后,这个对象就可以调用相应的方法,实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中。SQL查询语句对

20、数据库的查询操作将返回一个ResultSet对象。ResultSet对象是以统一形式的列组织的数据行组成。例如对于ResultSet rs=sql.executeQuery(“SELECT * FROM score“); 内存的结果集对象rs如图7.17(a)所示。对于ResultSet rs=sql.executeQuery(“SELECT 姓名,物理成绩,英语成绩 FROM score“); 内存的结果集对象rs如图7.17(b)所示。ResultSet对象一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,ResultSet对象可以使用getXxx方法获得字段值,

21、将位置索引(第一列使用1,第二列使用2,)或字段名传递给getXxx方法的参数即可。表7.1给了出了ResultSet对象的若干方法。,2019/6/23,图7.17(a),图7.17(b),2019/6/23,表7.1 ResultSet类的若干方法,注:无论字段是何种属性,总可以使用getSring()方法返回字段值的串表示;当使用ResultSet的getXxx方法查看一行记录时,不可以颠倒字段的顺序,例如: rs.getFloat(5); /错误rs.getFloat(4); /错误,2019/6/23,通过使用JDBC提供的API,可以在查询之前知道表中的字段的个数和名字。当和数据库

22、建立连接之后,比如: con=DriverManager.getConnection(“jdbc:odbc:mymoon“,“sa“,“sa“); 那么,该连接对象调用getMetaData()方法可以返回一个DatabaseMetaData对象,例如:DatabaseMetaData metadata=con.getMetaData(); metadata对象再调用getColumns()可以将score表的字段信息以行列的形式存储在一个ResultSet对象中, 例如 ResultSet tableMessage=metadata.getColumns(null,null, “score“

23、,null);若score表有n个字段,tableMessage就刚好有n行,每行4列。每列分别含有信息的次序为“数据库名“、“数据库扩展名“、“表名“、“字段名“。score表有5个字段,那么上述tableMessage有5行,每行有4列,如图7.18所示。tableMessage对象调用next方法使游标向下移动一行(游标的初始位置在第1行之前),然后tableMessage调用getXxx方法可以查看该行中列的信息,其中最重要的信息是第4列,,该列上的信息为字段的名字。例7-3中有两个bean,其中一个使用JDBC-ODBC桥接器方式连接数据库、查询表,另一个使用加载纯Java数据库驱动

24、程序方式连接数据库、查询表。用户可以通过JSP页面main.jsp提供的表单输入数据库(数据源)以及表的名字。JSP页面inquireOne.jsp和inquireTwo.jsp分别显示两个bean查询的有关结果。效果图。,7.4.1 顺序查询,2019/6/23,图7.18,2019/6/23,例题7-3 效果图7.19,图7.20,图7.21,2019/6/23,如果需要在结果集中前后移动,显示结果集指定的一条记录,或随机显示若干条记录等,则必须返回一个可滚动的结果集。为了得到一个可滚动的结果集,需使用下述方法先获得一个Statement对象:Statement stmt=con.crea

25、teStatement(int type ,int concurrency); 然后根据参数type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSet re=stmt.executeQuery(SQL语句);type的取值决定滚动方式,取值可以是: ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前

26、结果集同步改变。 Concurrency的取值决定是否可以用结果集更新数据库,取值可以是: ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库中的表。滚动查询经常用到ResultSet的方法(链接查看)例7-4中,负责查询数据库的bean首先将游标移动到最后一行,然后再获取最后一行的行号,以便获得表中的记录数目,该bean能随机输出若干条记录。效果图7.22,7.23。,7.4.2 随机查询,2019/6/23,滚动查询经常用到ResultSet的下述方法 public boolean

27、 previous() 将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时返回false. public void beforeFirst() 将游标移动到结果集的初始位置,即在第一行之前。 public void afterLast() 将游标移到结果集最后一行之后。 public void first() 将游标移到结果集的第一行。 public void last() 将游标移到结果集的最后一行。 public boolean isAfterLast() 判断游标是否在最后一行之后。 public boolean isBeforeFirst() 判断游标是否在第一行

28、之前 public boolean ifFirst() 判断游标是否指向结果集的第一行。 public boolean isLast() 判断游标是否指向结果集的最后一行。 public int getRow() 得到当前游标所指行的行号,行号从1开始,如果结果集没有行,返回0。 public boolean absolute(int row) 将游标移到参数row指定的行号。 注意:如果row取负值,就是倒数的行数,absolute(-1)表示移到最后一行,absolute(-2)表示移到倒数第2行。当移动到第一行前面或最后一行的后面时,该方法返回false。,滚动查询经常用到ResultS

29、et的下述方法,2019/6/23,例题7-4 效果图7.22,图7.23,2019/6/23,例7-5中,客户通过JSP页面输入查询条件,如按姓名查询成绩或按分数段查询score表中的记录等。该例子中的bean可以根据JSP页面提交的数据进行相应的数据库查询操作。效果图7.24,图7.25,图7.26,图7.24。,7.4.3 条件查询,2019/6/23,例题7-5 效果图7.24,图7.25,2019/6/23,例题7-5 效果图7.26 ,图7.27,2019/6/23,可以在SQL语句中使用ORDER BY子语句,对记录排序。例如,按总成绩排序查询的SQL语句如下:SELECT *

30、FROM score ORDER BY 数学成绩+物理成绩+英语成绩例7-6中,通过JSP页面可以选择按3科的总分从低到高排列记录、按姓氏拼音排序或英语成绩排序记录。bean根据JSP页面的选择的排序方式,使用SQL语句的ORDER BY子语句排序记录。效果图7.28。,7.4.4 排序查询,2019/6/23,可以用SQL语句操作符LIKE进行模式般配,使用“%”代替一个或多个字符,用一个下划线“_”代替一个字符。比如,下述语句查询姓氏是“王”的记录: rs=sql.executeQuery(“SELECT * FROM students WHERE 姓名 LIKE 王% “);例7-7中,

31、JSP页面负责选择模糊查询条件,bean负责连接数据库查询记录。效果图7.29,图7.30 。,7.4.5 模糊查询,2019/6/23,7.5 更新、添加与删除操作,Statement对象调用方法如下public int executeUpdate(String sqlStatement);通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加和删除操作。更新、添加和删除记录的SQL语法分别如下: UPDATE SET = 新值 WHERE INSERT INTO score(字段列表) VALUES (对应的具体的记录) 或 INSERT INTO score(VALU

32、ES (对应的具体的记录)DELETE FROM WHERE 将score表中“姓名“字段值为张三的记录的数学成绩字段和物理成绩字段的值更新为88和99 UPDATE score SET 数学成绩 = 88,物理成绩=99 WHERE 姓名=张三 向score表中添加一条新的记录(0007,li,68,90,78):INSERT INTO score(学号,姓名,数学成绩,物理成绩,英语成绩)VALUES (0007,li,68,90,78) 删除score表中的“学号“字段值为0002的记录DELETE FROM score WHERE 学号= 0002例7-8中,通过JSP页面mainPa

33、ge.jsp可以看到数据库Student的score表中的全部记录,在该页面单击“更新操作“、“添加操作“或“删除操作“可链接到相应的JSP页面renew.jsp、add.jsp和delete.jsp,这些页面使用相应的bean完成更新,添加和删除操作。在这个例子中,除了新写的bean外,还用到了例7-3中的bean(QueryBeanOne.java),该bean帮助查询score表中的记录。效果图7.31,图7.32,图7.33,图7.34 。,2019/6/23,例题7-8 效果图7.31,图7.32,2019/6/23,例题7-8 效果图7.33,图7.34,2019/6/23,7.6

34、 使用预处理语句,Java提供了更高效率的数据库操作机制,就是PreparedStatement对象,该对象被习惯地称作预处理语句对象。,2019/6/23,当向数据库发送一个SQL语句,如“SELECT * FROM score”,数据库中的SQL解释器负责将把SQL语句生成地层的内部命令,然后执行该命令,完成有关的数据操作。不断地向数据库提交SQL语句势必增加数据库中SQL解释器的负担,影响执行的速度。如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库地层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。对于JDBC,若使用C

35、onnection和某个数据库建立了连接对象con,那么con就可以调用 prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库地层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法都可以使得该底层内部命令被数据库执行:ResultSet executeQuery()boolean execute()int executeUpdate()只要编译好了PreparedStatement对象,那么该对象可以随时地执行上述方法,显然提高了访问数据库的速度。例7-9中的bean使用预处理语句来查询数

36、据库表中的全部记录。,7.6.1 预处理语句优点,2019/6/23,在对SQL进行预处理时,可以使用通配符“?“来代替字段的值,在预处理语句执行之前再设置通配符所表示的具体值。例如:sql=con.prepareStatement(“SELECT * FROM score WHERE 数学成绩 ? “); 在sql对象执行之前,必须调用相应的方法设置通配符“?“代表的具体值,例如: sql.setInt(1,89); void setInt(int parameterIndex, int x)设置通配符的值。参数parameterIndex用来表示SQL语句中从左到右的第parameterI

37、ndex个通配符号,x是该通配符所代表的具体值。虽然 sql=con.prepareStatement(“SELECT * FROM score WHERE 数学成绩 ? “); sql.setInt(1,89); 的功能等同于 sql=con.prepareStatement(“SELECT * FROM score WHERE 数学成绩 89 “);但是,使用通配符可以使得应用程序更容易动态地改变SQL语句中关于字段值的条件。 预处理语句设置通配符“?“的值的常用方法有: void setDate(int parameterIndex,Date x) void setDouble(int

38、parameterIndex,double x) void setFloat(int parameterIndex,float x) void setInt(int parameterIndex,int x) void setLong(int parameterIndex,long x) void setString(int parameterIndex,String x)例7-10中的bean使用预处理语句向Student数据库中的score表添加记录。本例还用到了7.4.3节中的bean(ConditionQuery.java)。,7.6.2 使用通配符,2019/6/23,7.7 基于C

39、achedRowSet分页显示记录,com.sun.rowset包提供了CachedRowSetImpl类,该类实现了CachedRowSet接口。CachedRowSetImpl对象可以保存ResultSet对象中的数据,而且CachedRowSetImpl对象不依赖Connnection 对象,这意味着一旦把ResultSet对象中的数据保存到CachedRowSetImpl对象后,就可以关闭和数据库的连接。CachedRowSetImpl继承了ResultSet的所有方法,因此可以像操作ResultSet对象一样来操作CachedRowSetImpl对象。将ResultSet对象resu

40、ltset中的数据保存到CachedRowSetImpl对象rowSet中的代码如下: CachedRowSetImpl rowSet=new CachedRowSetImpl (); rowSet.populate(resultset);假设CachedRowSetImpl对象中有m行记录,准备每页显示n行,那么总页数的计算公式是如果m除以n的余数大于0,总页数等于m除以n的商加1。如果m除以n的余数等于0,总页数等于m除以n的商。 即总页数=(m%n)=0?(m/n):(m/n+1)。如果准备显示第p页的内容,应当把CachedRowSetImpl对象中的游标移动到第(p-1)n+1行记录

41、处。例7-11中,bean在实现分页显示记录时使用了CachedRowSet对象。效果图7.35,图7.36。,2019/6/23,例题7-11 效果图7.35,图7.36,2019/6/23,7.8 常见数据库的连接 7.8.1 连接Oracle数据库,可以通过JDBC-ODBC桥接器和加载纯Java数据库驱动程序与Oracle数据库建立连接。JDBC-ODBC桥接器方式的设置和7.3.1节介绍的类似,只是在为ODBC数据源选择驱动程序时,选择Oracle即可。下面介绍通过直接加载纯Java数据库驱动程序来连接Oracle数据库的方法。 安装Oracle,找到目录Oracleora8ijdb

42、c中的文件classes12.zip,将该文件复制到JDK安装目录的子目录jrelibext中,并将classes.zip重新命名为classes.jre或classes.jar。 通过如下的两个步骤和一个Oracle数据库建立连接: (1)加载驱动程序Class.forName(“oracle.jdbc.driver.OracleDriver“); (2)建立连接 Connection conn=DriverManager.getConnection( “jdbc:oracle:thin:主机host:端口号:数据库名“, “用户名“, “密码“);例7-12 的JSP页面连接Oracle数

43、据库。,2019/6/23,目前,ODBC不支持MySql数据库,因此不能使用JDBC-ODBC桥接器方式与MySql数据库建立连接,只能使用加载MySql的纯Java驱动程序来与MySql数据库建立连接。 下载免费的MySql,版本是mysql-5.0.22-win32.zip。安装步骤如下: (1)将mysql-5.0.22-win32.zip解压到某个目录,如E:mysql。 (2)双击E:mysql下的setup.exe开始安装。出现安装界面,在该界面上单击“next”。 (3)出现选择安装方式界面。我们选择的方式是Custom,因为Typical和Complete方式不允许改变安装路

44、径,只能安装在C盘上。 (4)出现选择MySql功能以及安装路径界面。由于我们需要MySQL是一个网络数据库,即一个数据库服务器,所以选择“MySql Server”,这也是默认选择。单击该界面上的“Change”按钮,选择安装路径,我们选择的安装路径是“D:MySQLServer5.0”。 (5)出现确认安装界面。开始安装过程,只要按界面提示进行操作即可。 (6)出现是否需要在上注册的界面,我们选择跳过,即“Skip Sign-Up”,然后单击“Next”按钮 (7)出现确认安装结束界面。将该界面上是否配置MySql选择为否,即使用默认配置,单击“确认”按钮,完成安装过程。,7.8.2 连接

45、MySql数据库 1. 安装MySql数据库,2019/6/23,MySql数据库安装后会有如图7.37所示的目录结构。为了启动MySql数据库服务器,需要执行MySql安装目录的bin子目录中的mysqld.exe文件。你需要打开MS-DOS命令行窗口,并使用MS-DOS命令“cd D:MySQL Server 5.0bin”进入到bin目录中,然后在命令行输入“mysqld-nt”启动MySql数据库服务器,如果启动成功,MySql数据库服务器将占用当前MS-DOS窗口,如图7.38所示。,2.启动MySql数据库服务器,2019/6/23,通过启动MySql监视程序,可以实现创建数据库、

46、建表等操作。执行MySql安装目录的bin子目录中的mysql.exe文件,启动MySql监视程序,执行格式为:mysql u 用户名 密码打开MS-DOS命令行窗口,并使用MS-DOS命令进入到bin目录中,然后使用默认的root用户登录(在安装时root用户是默认的一个用户,没有密码)。命令如下:mysql u root成功登录后,MS-DOS窗口出现“mysql”字样的登录效果,如图7.39所示。如果想退出MySql监视程序,输入“exit”即可。,3. 启动MySql监视程序,2019/6/23,登录MySql服务器后,就可以使用SQL语句创建数据库、建表等操作。也可以下载相应的图形界

47、面的MySql管理工具进行创建数据库、建表等操作。本节将讲述怎样在JSP中和MySql建立连接,在MS-DOS命令行窗口中输入SQL语句建立数据库和创建表。MySql要求SQL语句必须用“;”号结束,在编辑SQL语句的过程中,可以使用“c”终止当前SQL语句的编辑。在登录后的MS-DOS窗口界面创建一个名字为Car的数据库,如图7.40所示。,4. 创建数据库,2019/6/23,进入数据库命令为 user 数据库名。进入数据库Car的操作如图7.41所示。建立一个名为message的表(建表操作如图7.42所示),该表的字段为number(varchar),name(varchar),mad

48、eTime(date),price(float)建表之后,就可以使用SQL语句对表进行添加、更新和查询操作。现在我们向表message中添加3条记录,并使用SQL语句查询我们添加到表中的记录。如图7.43和图7.44所示。,5. 为数据库建表,2019/6/23,图7.43,图7.44,2019/6/23,启动MySql数据库服务器,默认的该数据库服务器占用的端口是3306。 使用纯Java数据库驱动程序方式与数据库建立连接需要经过两个步骤。 (1)加载纯Java驱动程序 下载并文件解压至硬盘,将纯Java驱动程序复制到Tomcat服务器所使用的JDK的 jrelibext文件夹中,或复制到T

49、omcat服务器安装目录的commonlib文件夹中。应用程序加载MySql驱动程序代码如下:try Class.forName(“com.mysql.jdbc.Driver“)catch(Exception e) (2)和指定的数据库建立连接 假设应用程序和MySql服务器在同一台计算机上,那么应用程序和数据库Car建立连接的代码如下: try String uri= “jdbc:mysql:/localhost/Car“;String user=“root“;String password=“123“;con=DriverManager.getConnection(uri,user,password); catch(SQLException e) root用户有权访问数据库Car,root用户的密码是123.若root用户没有设置密码,那么将上述String password=“123“;更改为String password=“;例7-13中的JSP页面连接MySql数据库Car、查询message表。例7-14中,bean加载纯Java数据库驱动程序连接数据库、查询表。用户可以通过JSP页面main.jsp输入数据库名和表名。效果图7.45。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报