《JSP笔记》之五JSP和数据库应用.docx

上传人:b****7 文档编号:9062191 上传时间:2023-02-03 格式:DOCX 页数:66 大小:313.09KB
下载 相关 举报
《JSP笔记》之五JSP和数据库应用.docx_第1页
第1页 / 共66页
《JSP笔记》之五JSP和数据库应用.docx_第2页
第2页 / 共66页
《JSP笔记》之五JSP和数据库应用.docx_第3页
第3页 / 共66页
《JSP笔记》之五JSP和数据库应用.docx_第4页
第4页 / 共66页
《JSP笔记》之五JSP和数据库应用.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

《JSP笔记》之五JSP和数据库应用.docx

《《JSP笔记》之五JSP和数据库应用.docx》由会员分享,可在线阅读,更多相关《《JSP笔记》之五JSP和数据库应用.docx(66页珍藏版)》请在冰豆网上搜索。

《JSP笔记》之五JSP和数据库应用.docx

《JSP笔记》之五JSP和数据库应用

《JSP笔记》之五

第五章 JSP与数据库应用

本章中,我们使用SQLServer2000数据库管理系统。

特别约定,建立新的数据库名为:

student,在其下创建表:

表1:

student;表2:

login。

数据源名:

jspdb

§5.1访问SQLServer数据库和案例11

§5.1.1Web数据库程序设计基础

下面给出一个存取Web数据库的JSP数据库网络架构图。

 

图中,服务器端由Web应用程序服务器和数据库服务器组成,前者负责执行JSP程序。

JSP程序通过JDBC(JavaDataBaseConnectivity)接口和数据库服务器相连,并取得数据库中的数据。

JSP程序也通过JDBC向数据库发送SQL命令,对数据库进行新增、删除和修改记录等操作,这一切都需要依靠JDBC提供的类与方法来完成。

§5.1.2 数据库的基本概念

§5.1.3 在SQLServer2000中创建数据库

打开SQLServer2000的“企业管理器”,在其中创建数据库jspdb。

§5.1.4 JDBC简介

JDBC是Java数据库连接API,它由一些Java类和接口组成。

在JSP中可以使用JDBC实现对数据库中表记录的查询、修改、插入和删除等操作。

JDBC技术在JSP开发中占有很重要的地位。

经常使用JDBC进行如下操作:

(1)与一个数据库建立连接

(2)向已连接的数据库发送SQL语句

(3)处理SQL语句返回的结果

1.JSP与数据库连接的常用方式

应用程序必须首先与数据库建立连接。

通常有四种连接方式,见书第176至177页。

一般常用两种连接方式:

JDBC-ODBC桥接器和纯Java数据库驱动程序。

不同的连接方式对应着网页中不同的代码段。

2.JDBC中常用的类和接口

(1)DriverManager类:

驱动管理类

DriverManager类对象负责管理JDBC驱动程序,使用DriverManager的方法getConnection( )可以生成Connection对象。

(2)Connection类:

连接类

Connection类对象实现与数据源的连接,通过Connection类的createStatement( )方法可以生成Statement对象。

(3)Statement接口:

语句接口

用于发送简单的SQL语句,实现SQL语句的执行。

(4)ResultSet接口:

结果集接口

实现对数据的处理,维护记录指针,记录指针所指记录为当前记录。

ResultSet对象用于包含符合SQL语句中条件的所有记录,并且通过一套get方法提供了对这些记录中数据的访问。

(5)PreparedStatement接口:

预处理语句接口

用于发送带有一个或多个输入参数(IN参数)的SQL语句,PreparedStatement对象代表一个预编译的SQL语句。

执行速度较快,需要执行多次的语句应该创建为PreparedStatement对象。

PreparedStatement对象中的SQL语句可具有若干个参数,执行语句前用setXXX方法来提供。

§5.1.5DriverManager类

DriverManager类负责管理JDBC驱动程序,是JDBC的管理层,作用于用户和驱动程序之间。

它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。

与DriverManager类相关的方法主要有Class.forName(Stringdriver)和StaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)。

前者用于加载注册驱动程序,后者用于取得对数据库的连接。

关于它们的用法,在下一节中马上介绍。

§5.1.6使用JDBC-ODBC桥接器方式连接数据库

使用JDBC-ODBC桥接器方式与数据库建立连接,要经过:

创建ODBC数据源――>建立JDBC-ODBC桥接器――>和ODBC数据源指定的数据库建立连接 共3个步骤。

1.创建ODBC数据源:

步骤见教材。

操作入口:

控制面板管理工具数据源(ODBC)打开“ODBC数据源管理器”窗口,选择“系统DSN”选项卡“添加”按钮设置驱动程序:

SQLServer数据源名:

jspdb,服务器:

(local)

登录方式:

选择默认设置:

如下图,选择“使用网络登录ID的WindowsNT验证(W)。

勾上“更改默认的数据库为(D):

”中,输入数据库:

jspdb。

其它采用默认设置,不需要修改。

创建后,测试一下数据源。

2.建立JDBC-ODBC桥接器

为了连接jspdb数据源的jspdb数据库,首先要建立一个JDBC-ODBC桥接器.这个建立过程是通过下面这句代码实现的:

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

//或Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();

建立桥接器时可能发生异常,因此捕获这个异常。

所以建立桥接器的标准语句是:

try{

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

//或Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();

}

Catch(ClassNotFoundExceptione){

out.println(e)

}

3.与ODBC数据源指定的数据库建立连接

编写连接数据库的Java代码不会出现数据库的名称,只能出现数据源的名字。

先使用java.sql包中的Connection类声明一个连接对象,然后再使用类DriverManager调用它的静态方法getConnection创建这个对象:

Connectioncon=DriverMagager.getConnection(“jdbc:

odbc:

数据源名字”,”loginname”,”password”);

其中loginname和password是建立数据源时所使用的用户名和密码。

建立连接时应捕获SQLException异常:

try{

Connectioncon=DriverManager.getConnection(“jdbc:

odbc:

student”,”sa”,”sa”);

}

catch(SQLExceptione){

out.println(e);

}

这样就与数据源student建立了连接。

应用程序一旦与某个数据源建立连接,就可以通过SQL语句与该数据源所指定的数据库中的表交互信息,如查询、修改、更新表中的记录。

下例中是一个简单的JSP页面,该页面中的Java程序片代码负责连接到数据源jspdb,查询该数据源中的数据库jspdb中的表trade的全部记录。

表trade的字段设计和所有记录见书175页176页。

例1用JDBC-ODBC桥接器方式连接数据库,并显示表trade中的全部记录。

网页文件名example1.jsp

<%@pagecontentType="text/html;charset=gb2312"import="java.sql.*"%>

<%

Connectioncon;

Statementsql;

ResultSetrs;

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(ClassNotFoundExceptione){

out.println(e);

}

try{

con=DriverManager.getConnection("jdbc:

odbc:

jspdb","","");

sql=con.createStatement();

rs=sql.executeQuery("SELECT*FROMtrade");

%>

序列号

商品名称

类型

供应商

价格

数量

<%

while(rs.next()){

%>

<%=rs.getObject("id")%>

<%=rs.getObject("tradename")%>

<%=rs.getObject("class")%>

<%=rs.getObject("provider")%>

<%=rs.getObject("price")%>

<%=rs.getObject("num")%>

<%}%>

<%con.close();

}

catch(SQLExceptione1){}

%>

执行后,效果如下图:

[案例11]访问SQLServer数据库

采用JDBC-ODBC桥接器方式连接数据库中的表trade。

请同学们学习连接代码中参数的设置。

网页文件名jspodbc.jsp

--jspodbc.jsp-->

<%@pagecontentType="text/html;charset=gb2312"import="java.sql.*"%>

访问SQLServer数据库

访问SQLServer数据库


<%//下面程序段用于连接到数据库

//加载类sun.jdbc.odbc.JdbcOdbcDriver,并通过newInstance()方法实例化

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

out.println("数据库驱动注册成功!


");

//设置url为ODBC中的jspdb

Stringurl="jdbc:

odbc:

jspdb";

Stringuser="sa";

Stringpassword="";

//建立与数据库的连接,将连接赋给conn

Connectionconn=DriverManager.getConnection(url,user,password);

out.println("数据库连接成功!



");

//通过Connection类的createStatement()方法创建Statement实例,

//并赋给stmt,以方便操作数据库

Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

//创建SQL查询字符串,以选择数据表trade中的记录

Stringsql="select*fromtrade";

//通过Statement类的executeQuery()方法创建ResultSet对象rs,以方便对数据表的操作

ResultSetrs=stmt.executeQuery(sql);

//移动到数据表的第一条记录

rs.first();

//下面的语句将显示记录中各字段的内容

%>

id:

<%=rs.getObject("id")%>

商品名称:

<%=rs.getObject("tradename")%>

供应商:

<%=rs.getObject("provider")%>

类别:

<%=rs.getObject("class")%>

单价:

<%=rs.getObject("price")%>

数量:

<%=rs.getObject("num")%>


数据库访问成功!


<%

rs.close();//关闭rs

stmt.close();//关闭stmt

conn.close();//关闭conn

%>

数据库已关闭!

运行后效果如下图:

§5.1.7通过本地协议纯Java驱动程序访问SQLServer2000数据库

用Java语言编写的驱动程序称为纯Java驱动程序。

简单地说,JDBC可以调用本地协议纯Java驱动程序和相应的数据库建立连接。

这种连接数据库方式要经过2个步骤:

加载纯Java驱动程序->与指定的数据库连接。

1.加载纯Java驱动程序:

这种方式下不需要设置数据源,由于不依赖于ODBC,使得应用程序具有很好的移植性。

目前,许多数据库厂商都提供了自己的相应的纯Java驱动程序。

当使用纯Java驱动程序访问数据库时,必须保证:

在连接数据库的JSP网页程序所驻留的计算机上安装相应DBMS提供的纯Java驱动程序。

比如,Tomcat服务器上的某个Web应用程序,想访问SQLServer2000数据库管理系统所管理的数据库,则Tomcat服务器所驻留的计算机上必须要安装SQLServer 2000提供的纯Java驱动程序。

我们这里,使用的是MSSQLServer2000数据库管理系统。

所以需要把该厂商提供的jar包:

mssqlserver.jar、msutil.jar、msbase.jar挎贝到Java的jre\lib\ext中,或复制到Tomcat服务器安装目录的文件夹的common\lib中。

并且修改classpath环境变量:

在classpath的当前值中,再添加3个jar包,即修改完classpath后,其值为:

classpath=.;%Java_home%\lib\dt.jar;%Java_home%\lib\tools.jar;%tomcat_home%\common\lib\msbase.jar;%tomcat_home%\common\lib\msutil.jar;%tomcat_home%\common\lib\mssqlserver.jar;%tomcat_home%\common\lib\servlet.jar;//红色部分就是新添加的部分。

除此之外,还有一件很重要的事,就是安装SQLServer2000SP3补丁。

SQLServer2000SP3补丁可以直接在网上下载,其文件名为chs_sql2ksp3.exe。

下载完后,双击该文件安装SQLServer2000SP3补丁。

准备好了后,加载纯Java驱动程序:

//注意,这里的参数和ODBC桥接器方式不一样。

try{

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();

}

catch(Exceptione){

out.println(e);

}

2.和指定的数据库建立连接

假设网页程序要与SQLServer数据库服务器管理的数据库jspdb建立连接,而有权访问数据库jspdb的用户的id和密码分别是sa、空,那么建立连接的代码如下:

try{

Stringurl=”jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=jspdb”;

Stringuser=”sa”;

Stringpassword=””;

con=DriverManager.getConnection(url,user,password);

}

catch(SQLExceptione){

out.println(e);

}

下面的例子是采用纯Java数据库驱动程序方式来实现上一个例题的例子。

例2 使用纯Java数据库驱动方式显示表中的全部记录

网页文件名example2.jsp

<%@pagecontentType="text/html;charset=GB2312"%>

<%@pageimport="java.sql.*"%>

<%@pageimport="java.util.*"%>

<%

Connectioncon;

Statementsql;

ResultSetrs;

try{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

}

catch(Exceptione){

out.print(e);

out.print("***************");out.print("
");

}

try{

Stringurl;

url="jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=jspdb";

Stringuser="sa";

Stringpassword="";

con=DriverManager.getConnection(url,user,password);

sql=con.createStatement();

rs=sql.executeQuery("SELECT*FROMtrade");

%>

序列号

商品名称

类型

供应商

价格

数量

<%

while(rs.next()){

%>

<%=rs.getObject("id")%>

<%=rs.getObject("tradename")%>

<%=rs.getObject("class")%>

<%=rs.getObject("provider")%>

<%=rs.getObject("price")%>

<%=rs.getObject("num")%>

<%}%>

<%con.close();

}

catch(SQLExceptione1){

out.println(e1);

}

%>

运行后,效果同例1完全一样。

[拓展案例18]通过本地协议纯Java驱动程序访问SQLServer2000数据库

网页文件名jspSQLServer.jsp

--jspSQLServer.jsp-->

<%@pagecontentType="text/html;charset=gb2312"import="java.sql.*"%>

通过本地协议纯Java驱动程序访问SQLServer2000数据库

通过本地协议纯Java驱动程序访问SQLServer2000数据库


<%//下面程序段用于连接到数据库

//加载类com.microsoft.jdbc.sqlserver.SQLServerDriver,并通过newInstance()方法实例化

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

//设置url在本地主机1433端口上访问sqlserver数据库,数据库名为jspdb

Stringurl="jdbc:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=jspdb";

//设置用户名和密码

Stringuser="admin";

Stringpassword="";

//建立与数据库的连接,将连接赋给conn

Connectionconn=DriverManager.getConnection(url,user,password);

//通过Connection类的createStatement()方法创建Statement实例,

//并赋给stmt,以方便操作数据库

Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

//创建SQL查询字符串,以选择数据表trade中的记录

Stringsql="select*fromtrade";

//通过Statement类的ex

展开阅读全文
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1