在这个练习里你将学习使用JDBC访问数据库和插入一个记录到数据库的基础知识。
在这个练习里,你将写RegistrationServlet类的register方法。这个类和你在Servlet1A练习里用的一样。在这个练习里,你将使用数据库的功能。这个练习将展示实现用户需求的步骤。
第一部分:理解regsiter()方法在RegistrationServlet中的工作原理
在这个练习里,你将在com.ibm.waslab.JDBC包上工作。扩展RegistrationServlet类,理解register()。这个方法抛一个SQLException。完整的方法声明是:
public synchronized void register(Properties formInput)
throws SQLException{
}
register()方法在servlet取得控制时从doPost()方法里被调用。register()方法实际上写一个新的记录到数据库。我们将在第二部分写register()方法。同时,我们需要确信一些设置步骤已经完成。
1.打开init()方法,在super.init()的调用后面输入以下的代码:
//Load JDBC driver for DB2
try
{
Class.forName(JKToysDBInfo.gerDriver());
}
catch (ClassNotFoundException e)
{
erroLog(“JDBC Driver not found”+e);
}
保存init()方法。记住,在驱动器管理可以得到一个连接以前,一个正确的数据库驱动器必须被servlet装载。每一个servlet只在servlet的init()方法里作一次。这个方法并不真地建立一个连接,它只是允许连接被建立。
注意:在这个情况下,我们装载DB2 app驱动器。这个驱动器是在数据库装在servlet将要运行的同一台机器上时使用的。如果你在访问另一台机器上的数据库,你要使用net驱动器:
COM.ibm.db2.jdbc.net.DB2Driver
当用net驱动器得到一个连接,你需要在getConnection()里使用的URL里提供更多的信息。数据库所在的机器名或URL,和DB2 Java Gateway侦听的端口号。一个有效的URL参数看上去是这样的:
jdbc:db2://servrid:8888/databasename
第二部分
1.现在,回去,重新打开register()方法。代码的第一行创建一个数据库连接:
Connection conn=DriverManager.getConnection(URL,USER,PASSWORD);
你用驱动器管理器的静态方法getConnection(),把数据库的URL,一个有效的用户ID和口令传递给它。url,userid和password在类被装载时从一个属性文件里得到(看静态变量声明)。
2.现在到了有挑战性的部分了。我们要作的第一件事是找到已经被分配掉的最后一个客户号码,这样我们可以分配给正在注册的新客户一个新的客户号码(比以前的最高的还要高)。我们要存储这个新的客户号码在一个int变量名为nextId。为了做到这个,你会需要确信使用Statement类和ResultSet类。以下的SQL;
“SELECT MAX(CUSTNO) FORM”+DBOWNER+”.CUSTOMER”
将允许你获得当前最高的客户号。试试自己写这个代码,基于课程笔记的例子。如果你需要帮助,看答案页。
3.接着你将用一个prepared statement对象来把客户属性对象里的信息插入数据库。输入以下的行:
//Insert record in the database
PreparedStatement insertStatement=
conn.prepareStatement(“INSERT INTO”+DBOWNER+”.CUSTOMER(FNAME,LNAME,ADDR,CITY,STATE,AGE,ZIP,CUSTNO)”+”VALUES(?,?,?,?,?,?,?,?)”);
上面的行要求连接创建一个prepared statement对象叫insertStatement。SQL语句作为参数被传递。数据库行的每一列的值用问号代表。每一个问号必须被一个正确类型的值代替。输入以下行:
insertStatement.setString(1,formInput.getProperty(“FNAME”));
insertStatement.setString(2,formInput.getProperty(“LNAME”));
insertStatement.setString(3,formInput.getProperty(“ADDR”));
insertStatement.setString(4,formInput.getProperty(“CITY”));
insertStatement.setString(5,formInput.getProperty(“STATE”));
insertStatement.setString(6,formInput.getProperty(“AGE”));
insertStatement.setString(7,formInput.getProperty(“ZIP”));
insertStatement.setInt(8,nextId);
4.insertStatement执行对数据库的更新。输入下面两行:
insertStatement.executeUpdate();
如果有错误出现在创建连接时,语句或访问数据库,这个方法会抛出一个SQLException。
5.最后你需要存储客户号码到formInput属性对象。输入下面行:
formInput.put(“CUSTNO”,new Integer(nextId).toString());
6.保存方法。应该没有错误。
7.接着你将需要为JKRegister servlet编辑WebSphere配置文件。(编辑”[x:]\IBMVJava\ide\project_resources\IBM WebSphere Test Environment\properties\server\servlet\servletservice\serrvlets.properties”.)
改变看上去这样的行:
servlet.JKRegister.code=com.ibm.waslab.servlet1.RegistrationServlet
为这样:
servlet.JKRegister,code=com.ibm.waslab.JDBC.RegistrationServlet
8.如果你的webserver在运行,关掉它。在VAJ,启动SERunner。打开你的web浏览器,到JK Toys网站的注册页面。在表格里输入注册信息,按注册按钮。你的新的servlet将被调用。登录进JKToys站点确信注册已经发生。你的新的客户号码应该能在数据库找到。
在这个练习你作了什么
在这个练习,你编写了Registration Servlet的register方法。这个方法用JDBC来创建一个新的客户号码,注册一个新的客户到数据库。现在你有了在你的servlets里访问数据库的基本知识。
答案
以下的代码创建一个SQL语句,执行在前一页里定义的SQL查询。
//Get next customer number
Statement sqlStatement=conn.createStatement();
ResultSet result=sqlStatement.executeQuery(“SELECT MAX(CUSTNO) FROM”+DBOWNER+”.CUSTOMER”);
查询的结果被放在ResultSet对象叫result里面。结果的集合包含一个游标,最初指向返回的第一行前面。为了得到查询的值游标必须用next()往前移动。用这个方法,游标只能向前移动。下面几行移动游标到返回的值,增加1。
int nextId=0;
if(result.next()= =true)
{
nextId=result.getInt(1)+1;
}
if检查确定是否有行被返回。如果没有,结果为false。我们不处理错误的情况,但是它可以简单地用把nextId设置为1来处理。我们还可以用ResultSet的方法getInt(String),列的名字为”CUSTNO”,但是因为我们知道只有一列会被返回,我们选择用getInt(int)..
分享到:
相关推荐
为了确保能够顺利地使用JDBC访问数据库,需要进行以下准备工作: 1. **安装SQL Server 2000并打上sp3补丁**:确保SQL Server 2000版本为sp3或更高,这可以增强数据库的安全性和稳定性。 2. **安装SQL Server 2000 ...
实验八的主题是“通过JDBC方式访问数据库”,这是数据库概论课程中的一项重要实践内容。JDBC(Java Database Connectivity)是Java语言中用于与各种数据库交互的一种标准接口,由Sun Microsystems开发并定义,现已...
- **安全性问题**:直接使用JDBC访问数据库可能会带来安全风险,如SQL注入攻击等。因此,在处理用户输入时应格外小心。 - **性能考虑**:频繁地打开和关闭数据库连接可能会影响应用程序的性能。可以考虑使用连接池...
JDBC(Java Database Connectivity)是 Java 语言中用来访问数据库的 API,提供了一种标准的方式来连接和操作数据库。下面是 JDBC 访问数据库的步骤: 步骤 1:加载对应数据库驱动 在使用 JDBC 访问数据库之前,...
### JDBC访问数据库的步骤与原理 #### JDBC简介 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了诸如...
JDBC是Java中用于与各种数据库通信的标准接口,而Oracle数据库是一个广泛使用的商业关系型数据库系统。在这个主题中,我们将深入探讨以下几个关键知识点: 1. **JDBC驱动**: 在Java中与Oracle数据库交互,首先需要...
通过以上步骤,你可以成功地使用JDBC访问MS Access数据库。这个过程涉及到Java编程、数据库连接管理和SQL查询,对于初学者来说是一次很好的实践机会。记住,理解并熟练掌握这些基础概念对进一步学习更复杂的数据库...
- **纯java程序,使用与具体数据库无关的协议**:这种驱动程序通过一个中间服务器与数据库通信,适合于网络环境。 - **纯java的驱动程序,直接与特定的数据库系统通信**:这是最常见也是最直接的方式,它直接将JDBC...
"基于JDBC的最好用数据库访问类"是一个专为简化JDBC操作而设计的工具类,它的目标是提供更高效、易用和健壮的数据库访问方式,从而减轻开发者的工作负担。 首先,让我们了解一下JDBC的基本使用流程:加载驱动、建立...
这是使用jdbc访问数据库的方法,很好的,很详细的讲解了如何使用jdbc连接数据库
本教程将详细介绍如何使用Java JDBC访问数据库的全过程,包括连接数据库、执行SQL语句、处理结果集以及关闭资源。 首先,要使用JDBC,我们需要在Java项目中引入数据库驱动的jar包。对于不同的数据库(如MySQL、...
JDBC是Java平台中用于访问数据库的标准Java API,它允许开发者执行SQL语句并处理结果。 在Java中,连接不同类型的数据库主要涉及以下几个步骤: 1. **加载驱动**:首先,需要加载对应数据库的JDBC驱动。例如,对于...
《数据库系统概论》课程之实验八,通过JDBC访问数据库。本文件中包含实验报告一份,可运行代码一份与JDBC的驱动jar包。 程序实现了使用Java语言编程实现对数据库的访问,所有的SQL操作均在自己建立的新库里进行,...
总的来说,JDBC为Java开发者提供了一个统一的接口,使得他们能够在不同的数据库之间轻松切换,而无需学习新的数据库特定的API。这个过程涉及了数据库驱动的配置、连接的建立、SQL语句的执行和结果的处理,是Java进行...
在提高JDBC设计中JSP数据库访问速度的过程中,我们需要关注几个关键点,包括JSP的模块化、MVC设计模式的应用、JDBC操作的优化以及使用自定义标签库(Tag Libraries)来提升代码的可读性和可维护性。 首先,JSP作为...
它由Sun Microsystems(现为Oracle公司)开发,是Java核心类库的一部分,允许Java应用程序通过一组标准化的接口来访问和操作数据库。JDBC的最大优势在于其独立性,它不依赖于特定的数据库系统,因此可以用来连接多种...
JDBC数据库访问技术
在Java中通过JDBC访问Oracle数据库时,通常采用thin驱动方式。thin驱动是一种纯Java驱动,无需依赖任何非Java代码即可完成与Oracle数据库的交互。 - **加载驱动**:`Class.forName("oracle.jdbc.driver.Oracle...
实验八“通过JDBC方式访问数据库”是针对数据库系统概论的一个实践环节,旨在让学生掌握使用Java语言通过JDBC(Java Database Connectivity)接口来设计数据库应用程序,以及对数据库进行操作。JDBC是一种标准API,...
以下是一个简单的JDBC连接到PostgreSQL数据库并获取数据的步骤: 1. **导入所需的JDBC包**: 在Java源代码文件顶部,需要导入JDBC相关的类: ```java import java.sql.Connection; import java.sql....