《JSP笔记》之五(JSP和数据库应用).docx_第1页
《JSP笔记》之五(JSP和数据库应用).docx_第2页
《JSP笔记》之五(JSP和数据库应用).docx_第3页
《JSP笔记》之五(JSP和数据库应用).docx_第4页
《JSP笔记》之五(JSP和数据库应用).docx_第5页
免费预览已结束,剩余35页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JSP 笔记之五第五章JSP 与数据库应用本章中, 我们使用SQL Server 2000 数据库管理系统。特别约定, 建立新的数据库名为:student,在其下创建表:表1: student;表 2: login 。数据源名:jspdb 5.1 访问 SQL Server 数据库和案例 11 5.1.1 Web 数据库程序设计基础下面给出一个存取Web 数据库的JSP 数据库网络架构图。发送请求JSP程序JDBC 接口数据库响应客户端浏览器数据库服务器Web 应用程序服务器浏览器端服务器端图中,服务器端由Web 应用程序服务器和数据库服务器组成,前者负责执行JSP程序。JSP程序通过 JDB

2、C (Java DataBase Connectivity )接口和数据库服务器相连,并取得数据库中的数据。 JSP 程序也通过 JDBC 向数据库发送 SQL 命令,对数据库进行新增、删除和修改记录等操作,这一切都需要依靠JDBC 提供的类与方法来完成。5.1.2数据库的基本概念5.1.3在SQL Server 2000中创建数据库打开SQL Server 2000的“企业管理器” ,在其中创建数据库jspdb。5.1.4JDBC简介JDBC 是 Java 数据库连接API ,它由一些Java 类和接口组成。 在 JSP 中可以使用JDBC实现对数据库中表记录的查询、修改、插入和删除等操作。

3、JDBC 技术在 JSP开发中占有很重要的地位。经常使用JDBC 进行如下操作:(1)与一个数据库建立连接(2)向已连接的数据库发送SQL 语句(3)处理 SQL 语句返回的结果1 JSP 与数据库连接的常用方式应用程序必须首先与数据库建立连接。 通常有四种连接方式, 见书第 176 至 177 页。一般常用两种连接方式: JDBC ODBC 桥接器和纯 Java 数据库驱动程序。不同的连接方式对应着网页中不同的代码段。2 JDBC 中常用的类和接口(1)DriverManager 类:驱动管理类DriverManager类对象负责管理JDBCgetConnection( ) 可以生成Conn

4、ection 对象。(2)Connection 类:连接类驱动程序,使用DriverManager的 方 法Connection 类对象实现与数据源的连接,通过以生成 Statement 对象。Connection类的createStatement( )方法可(3)Statement 接口:语句接口用于发送简单的SQL 语句,实现SQL 语句的执行。(4)ResultSet 接口:结果集接口实现对数据的处理,维护记录指针,记录指针所指记录为当前记录。ResultSet 对象用于包含符合SQL语句中条件的所有记录,并且通过一套get方法提供了对这些记录中数据的访问。(5)PreparedStat

5、ement 接口:预处理语句接口用于发送带有一个或多个输入参数( IN 参数)的 SQL 语句, PreparedStatement 对象代表一个预编译的 SQL 语句。执行速度较快,需要执行多次的语句应该创建为PreparedStatement对象。 PreparedStatement 对象中的 SQL 语句可具有若干个参数,执行语句前用 setXXX 方法来提供。 5.1.5 DriverManager 类DriverManager 类负责管理 JDBC 驱动程序,是 JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。与 Driver

6、Manager 类相关的方法主要有Class.forName(Stringdriver) 和 Static ConnectiongetConnection(String url,String user,String password) 。前者用于加载注册驱动程序,后者用于取得对数据库的连接。关于它们的用法,在下一节中马上介绍。5.1.6使用 JDBC-ODBC桥接器方式连接数据库使用 JDBC ODBC 桥接器方式与数据库建立连接,要经过: 创建 ODBC 数据源建立 JDBC ODBC 桥接器和ODBC 数据源指定的数据库建立连接共 3 个步骤。1创建 ODBC 数据源:步骤见教材。 操作入

7、口: 控制面板管理工具数据源( ODBC )打开“ ODBC数据源管理器”窗口,选择“系统DSN ”选项卡“添加”按钮设置驱动程序: SQL Server数据源名: jspdb,服务器: (local)登录方式: 选择默认设置: 如下图, 选择 “使用网络登录ID 的 Windows NT 验证 (W) 。”勾上“更改默认的数据库为(D) :”中,输入数据库:需要修改。创建后,测试一下数据源。2建立 JDBC ODBC 桥接器为了连接jspdb 数据源的jspdb 数据库,首先要建立一个立过程是通过下面这句代码实现的:jspdb 。其它采用默认设置,不JDBC ODBC 桥接器 .这个建Cla

8、ss.forName( “sun.jdbc.odbc.JdbcOdbcDriver ”);/ 或 Class.forName( “sun.jdbc.odbc.JdbcOdbcDriver ”).newInstance();建立桥接器时可能发生异常,因此捕获这个异常。所以建立桥接器的标准语句是:tryClass.forName( “sun.jdbc.odbc.JdbcOdbcDriver ”);/ 或 Class.forName( “sun.jdbc.odbc.JdbcOdbcDriver ”).newInstance();Catch(ClassNotFoundException e)out.p

9、rintln(e)3与 ODBC 数据源指定的数据库建立连接编写连接数据库的Java 代码不会出现数据库的名称,只能出现数据源的名字。先使用java.sql包中的Connection 类声明一个连接对象,然后再使用类DriverManager 调用它的静态方法getConnection创建这个对象:Connectioncon=DriverMagager.getConnection(“jdbc:odbc:数据源名字”,”loginname”,”password”);其中 login name 和 password 是建立数据源时所使用的用户名和密码。建立连接时应捕获SQLException 异常

10、:tryConnection con=DriverManager.getConnection ( “jdbc:odbc:student ”,”sa”,”sa”);catch(SQLException e)out.println(e);过这样就与数据源student 建立了连接。应用程序一旦与某个数据源建立连接,就可以通SQL 语句与该数据源所指定的数据库中的表交互信息,如查询、 修改、 更新表中的记录。下例中是一个简单的JSP页面,该页面中的Java 程序片代码负责连接到数据源jspdb,查询该数据源中的数据库jspdb 中的表 trade 的全部记录。表trade 的字段设计和所有记录见书

11、175 页 176 页。例 1用 JDBC ODBC 桥接器方式连接数据库,并显示表trade 中的全部记录。网页文件名example1.jsp 序列号 商品名称 类型 供应商 价格 数量 执行后,效果如下图:案例 11访问 SQL Server 数据库采用 JDBC ODBC 桥接器方式连接数据库中的表 trade。请同学们学习连接代码中参数的设置。网页文件名jspodbc.jsp 访问 SQL Server 数据库 访问 SQL Server 数据库 % / 下面程序段用于连接到数据库/加载类 sun.jdbc.odbc.JdbcOdbcDriver ,并通过newInstance() 方

12、法实例化Class.forName(sun.jdbc.odbc.JdbcOdbcDriver).newInstance();out.println( 数据库驱动注册成功!);/设置 url 为 ODBC 中的 jspdbString url=jdbc:odbc:jspdb;String user=sa;String password=;/建立与数据库的连接,将连接赋给connConnection conn= DriverManager.getConnection(url,user,password);out.println( 数据库连接成功!);/通过 Connection 类的 create

13、Statement()方法创建Statement 实例,/并赋给 stmt,以方便操作数据库Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);/创建 SQL 查询字符串,以选择数据表 String sql=select * from trade;trade 中的记录/通过 Statement 类的 executeQuery() 方法创建ResultSet 对象 rs,以方便对数据表的操作ResultSet rs=stmt.executeQuery(sql

14、);/移动到数据表的第一条记录rs.first();/下面的语句将显示记录中各字段的内容%id: 商品名称: 供应商: 类别: 单价: 数量: 数据库访问成功!数据库已关闭 !运行后效果如下图: 5.1.7通过本地协议纯Java 驱动程序访问SQL Server 2000 数据库用 Java 语言编写的驱动程序称为纯Java 驱动程序。简单地说,JDBC 可以调用本地协议纯 Java 驱动程序和相应的数据库建立连接。这种连接数据库方式要经过2 个步骤: 加载纯 Java 驱动程序与指定的数据库连接。1加载纯Java驱动程序:这种方式下不需要设置数据源,由于不依赖于ODBC ,使得应用程序具有很

15、好的移植性。目前,许多数据库厂商都提供了自己的相应的纯Java 驱动程序。当使用纯Java 驱动程序访问数据库时,必须保证:在连接数据库的JSP 网页程序所驻留的计算机上安装相应DBMS提供的纯 Java 驱动程序。比如,Tomcat 服务器上的某个Web 应用程序, 想访问 SQLServer2000 数据库管理系统所管理的数据库,Server2000 提供的纯Java 驱动程序。则 Tomcat 服务器所驻留的计算机上必须要安装SQL我们这里,使用的是MS SQL Server 2000 数据库管理系统。所以需要把该厂商提供的jar包: mssqlserver.jar、 msutil.ja

16、r 、 msbase.jar 挎贝到Java 的jrelibext中,或复制到Tomcat服务器安装目录的文件夹的commonlib 中。并且修改classpath 环境变量:在 classpath 的当前值中,再添加3 个 jar 包,即修改完classpath 后,其值为:classpath=.;%Java_home%libdt.jar;%Java_home%libtools.jar;libmsbase.jar;%tomcat_home%commonlibmsutil.jar;%tomcat_home%commonlibmssqlserver.jar;%tomcat_home%common

17、libservlet.jar;/ 红色部分就是新添加的部分。除此之外,还有一件很重要的事,就是安装SQL Server 2000 SP3补丁。SQL Server 2000 SP3 补丁可以直接在网上下载,其文件名为后,双击该文件安装SQL Server 2000 SP3 补丁。准备好了后,加载纯Java驱动程序: / 注意,这里的参数和chs_sql2ksp3.exe。下载完ODBC 桥接器方式不一样。tryClass.forName( “com.microsoft.jdbc.sqlserver.SQLServerDriver ”).newInstance();catch(Exception

18、 e)out.println(e);2和指定的数据库建立连接假设网页程序要与问数据库jspdb 的用户的SQL Server 数据库服务器管理的数据库jspdb 建立连接,而有权访id 和密码分别是sa、空,那么建立连接的代码如下:tryString url= ”jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=jspdb ”;String user= ”sa”;String password= ”;con=DriverManager.getConnection(url,user,password);catch(SQLException

19、 e)out.println(e);下面的例子是采用纯Java 数据库驱动程序方式来实现上一个例题的例子。例 2 使用纯 Java 数据库驱动方式显示表中的全部记录网页文件名 example2.jsp%Connection con;Statement sql;ResultSet rs;tryClass.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver).newInstance();catch(Exception e)out.print(e);out.print(*);out.print();tryString url;url=jdbc:m

20、icrosoft:sqlserver:/localhost:1433;DatabaseName=jspdb;String user=sa;String password=;con=DriverManager.getConnection(url,user,password);sql=con.createStatement();rs=sql.executeQuery(SELECT * FROM trade);% 序列号 商品名称 类型 供应商 价格 数量 运行后,效果同例1 完全一样。拓展案例18通过本地协议纯Java 驱动程序访问网页文件名jspSQLServer.jspSQL Server 2

21、000数据库 通过本地协议纯Java 驱动程序访问SQL Server2000数据库通过本地协议纯Java 驱动程序访问SQL Server2000数据库 id: 商品名称: 供应商: 类别: 单价: 数量: 加到运行后,效果同案例11。上述网页在运行中,如果出现关于用户admin 的错误提示。 则说明用户SQL Server 2000 的登录角色中。下面就添加用户并设置其使用jspdbadmin 还没有添数据库的权限。3添加数据库用户admin添加用户在SQL Server 2000 的“企业管理器”中进行,具体见书第187 至 188 页。 5.1.8 访问 Microsoft Acces

22、s 数据库本小节是用 Mircrosoft Access 数据库代替 SQL Server 2000 数据库实现数据的管理。相应地在 JSP网页中应该有哪些改动呢?前面我们知道,可以采用 2 种方式实现 JSP网页同 SQL Server 2000 数据库的连接:桥接器方式和纯 Java 驱动程序方式。这里,和 Access 相连,我们就只采用桥接器数据源的方式,另一种方式需要相应数据库 Access 的 JDBC 驱动的类包,就不涉及了。请同学们参看相应书籍。首先,在当前目录c:Tomcat 5.5webappsROOTjsptechchapter5下再创建一个目录jspaccess,然后将

23、网页和Access 数据库都存放在这个目录下。步骤如下个表1使用 Microsoft Access 程序创建一个数据库trade,内容同上几小节。jspdb,并在这个jspdb数据库内创建一2创建数据源jspaccess:控制面板管理工具数据源 (ODBC)系统 DSN“添加”按钮在“选择您想为其安装数据源的驱动程序(S)”中,即可以选“Driverdo MicrosoftAccess (*.mdb) ,也可以选”Microsoft Access Driver (*.mdb)”“完成”按钮设置数据源名: jspaccess点“选择”按钮,选择相连接的数据库c:Tomcat5.5webappsR

24、OOTjsptechchapter5jspaccessjspdb.mdb点“确定”。3修改 JSP 程序:当数据库改为Access 后,只需要在网页中修改连接数据库的这句代码DriverManager.getConnection(url,user,password)中的参数,将url 从String url=jdbc:odbc:jspdb改为:String url=jdbc:odbc:jspaccess也即修改数据源的名字就可以了。其它不需要做任何修改。采用桥接器方式和 SQL Server 2000 相连接的案例 11,改为采用桥接器方式和 Access 相连接的拓展案例 19。如下所示:拓

25、展案例19网页文件名jspaccess.jsp 访问 Access 数据库 访问 Access 数据库 %try/启动异常处理/加载类 sun.jdbc.odbc.JdbcOdbcDriver ,并通过 newInstance() 方法实例化 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver).newInstance(); out.println( 数据库驱动注册成功! );/设置 url 为 ODBC 中的 jspdbString url=jdbc:odbc:jspaccess;String user=;String password=;/建立与数据库的连

26、接,将连接赋给connConnection conn= DriverManager.getConnection(url,user,password); out.println( 数据库连接成功 !);/通过 Connection 类的 createStatement()方法创建Statement 实例,/并赋给 stmt,以方便操作数据库Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);/创建 SQL 查询字符串,以选择数据表 String sql=se

27、lect * from trade;trade 中的记录/通过 Statement 类的 executeQuery() 方法创建ResultSet 对象 rs,以方便对数据表的操作ResultSet rs=stmt.executeQuery(sql);/移动到数据表的第一条记录rs.first();/下面的语句将显示记录中各字段的内容%id: 商品名称: 供应商: 类别: 单价: 数量: 数据库访问成功!%rs.close();stmt.close();conn.close();/关闭/关闭/关闭rsstmtconncatch(ClassNotFoundException e)out.prin

28、tln( 驱动程序类异常!);out.println(e.getMessage();catch(SQLException e)out.println( 数据库连接或SQL 查询异常! );out.println(e.getMessage();catch(Exception e)out.println( 其他异常! );out.println(e.getMessage();%运行后效果如书195 页图 5.1.9关闭与数据库的连接5-29 。当程序不再使用与数据库的连接时,应使用Connection对象的close 方法关闭与数据库Connection con; Statement sql; R

29、esultSet rs; try的连接。即如下语句:conn.close();/这里conn 是连接对象(Connection对象)名并且也关闭其他对象,即:rs.close();stmt.close();/关闭/关闭rsstmt当然,不关闭这些对象,程序运行也没有问题。就像是为了避免麻烦,增强程序的健壮性。try.catch.语句一样,这么做 5.2访问数据库连接到数据库后,就可以对数据库进行各种操作。可以运行SQL 语句来查询数据库表或者添加、修改其内容,或者新建、删除一个表。java.sql 包中与数据库操作有关的类和接口主要有以下几个:( 1)Connection :连接类( 2) S

30、tatement:语句对象。由 Connection 类的 createStatement()方法创建。( 3)PreparedStatement:预处理语句对象。 由 Connection 类的 prepareStatement()方法创建。用来发送带参数的 SQL 语句或基本 SQL 语句的语句对象( 4)CallableStatement :由 Connection 类的 prepareCall() 方法创建。用来调用数据库中的存储过程。( 5) ResultSet:结果集对象。用于获取和更新查询的结果。分为两类。一类是不带参数的结果集。一类是带有参数的结果集,参数的选取和含义如书201

31、 页表 5-7 表 5-8 所示。 5.2.1 SQL 简介:书 196 页至 200 页简单介绍了操作数据库表的语句。主要有:(1)查询记录select: select 字段名 1,字段名 2,from 表名where 条件(2)插入一条记录insert: insert into 表名value (值 1,值 2,.)(3)删除若干条记录delete: deleter from 表名where条件(4)更新 update 的语句: update 表名set 字段名 1=值 1,字段名2=值 2,(5)创建一个新表(6)修改表的结构等5.2.2 Connection类: 见书5.2.3 Sta

32、tement类: 见书5.2.4使用 SQL 语句对数据库进行操作SQL 提供了SELECT 、INSERT 、DELETE和UPDA TE四条语句分别对表进行查询、插入、删除和更新操作。1查询操作对表的查询操作,是使用语句对象 Statement 对象 executeQuery(String select 查询语句 )方法完成。该方法发送( 一般都是名为 sql 或 stmt) 的 Select 语句到数据库,并将执行结果以 ResultSet 对象形式返回到程序中。查询操作的过程如下面的代码段所示:/声明连接对象/声明语句对象/声明结果集对象Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/ 建立 JDBC ODBC 桥接器catch(ClassNotFoundException e)trycon=DriverManager.getConnection(jdbc:odbc:student,zhouping,);/连接数据源sql=con.createStatement()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论