⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 用jdbc访问一个数据库.htm

📁 写给JSP初级程序员的书
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0056)http://eps.www85.cn4e.com/java/article/devshow.asp?id=69 -->
<HTML><HEAD><title>csdn_用JDBC访问一个数据库</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE type=text/css>TD {
	FONT-FAMILY: "Verdana", "Arial", "宋体"; FONT-SIZE: 9pt
}
A {
	COLOR: #660000; TEXT-DECORATION: underline
}
A:hover {
	COLOR: #660000; TEXT-DECORATION: none
}
.line {
	LINE-HEIGHT: 14pt
}
</STYLE>

<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff text=#000000>

  <table><tbody>
  <TR>
    <TD height=21>
      <DIV align=center><B><FONT size=3>用JDBC访问一个数据库 <BR><FONT 
      size=2> 
      </FONT></FONT></FONT>
      <HR align=center color=#cccccc noShade SIZE=1>
      </DIV></TD></TR>
  <TR>
    <TD class=line><FONT 
      color=#333300><BR><BR>在这个练习里你将学习使用JDBC访问数据库和插入一个记录到数据库的基础知识。&nbsp;<BR><BR>在这个练习里,你将写RegistrationServlet类的register方法。这个类和你在Servlet1A练习里用的一样。在这个练习里,你将使用数据库的功能。这个练习将展示实现用户需求的步骤。&nbsp;<BR><BR>第一部分:理解regsiter()方法在RegistrationServlet中的工作原理&nbsp;<BR><BR>在这个练习里,你将在com.ibm.waslab.JDBC包上工作。扩展RegistrationServlet类,理解register()。这个方法抛一个SQLException。完整的方法声明是:&nbsp;<BR><BR>public&nbsp;synchronized&nbsp;void&nbsp;register(Properties&nbsp;formInput)&nbsp;<BR><BR>throws&nbsp;SQLException{&nbsp;<BR><BR><BR><BR>}&nbsp;<BR><BR>register()方法在servlet取得控制时从doPost()方法里被调用。register()方法实际上写一个新的记录到数据库。我们将在第二部分写register()方法。同时,我们需要确信一些设置步骤已经完成。&nbsp;<BR><BR>1.打开init()方法,在super.init()的调用后面输入以下的代码:&nbsp;<BR><BR>//Load&nbsp;JDBC&nbsp;driver&nbsp;for&nbsp;DB2&nbsp;<BR><BR>try&nbsp;<BR><BR>{&nbsp;<BR><BR>Class.forName(JKToysDBInfo.gerDriver());&nbsp;<BR><BR>}&nbsp;<BR><BR>catch&nbsp;(ClassNotFoundException&nbsp;e)&nbsp;<BR><BR>{&nbsp;<BR><BR>erroLog(“JDBC&nbsp;Driver&nbsp;not&nbsp;found”+e);&nbsp;<BR><BR>}&nbsp;<BR><BR><BR><BR>保存init()方法。记住,在驱动器管理可以得到一个连接以前,一个正确的数据库驱动器必须被servlet装载。每一个servlet只在servlet的init()方法里作一次。这个方法并不真地建立一个连接,它只是允许连接被建立。&nbsp;<BR><BR><BR><BR>注意:在这个情况下,我们装载DB2&nbsp;app驱动器。这个驱动器是在数据库装在servlet将要运行的同一台机器上时使用的。如果你在访问另一台机器上的数据库,你要使用net驱动器:&nbsp;<BR><BR>COM.ibm.db2.jdbc.net.DB2Driver&nbsp;<BR><BR>当用net驱动器得到一个连接,你需要在getConnection()里使用的URL里提供更多的信息。数据库所在的机器名或URL,和DB2&nbsp;Java&nbsp;Gateway侦听的端口号。一个有效的URL参数看上去是这样的:&nbsp;<BR><BR>jdbc:db2://servrid:8888/databasename&nbsp;<BR><BR>第二部分&nbsp;<BR><BR>1.现在,回去,重新打开register()方法。代码的第一行创建一个数据库连接:&nbsp;<BR><BR>Connection&nbsp;conn=DriverManager.getConnection(URL,USER,PASSWORD);&nbsp;<BR><BR>你用驱动器管理器的静态方法getConnection(),把数据库的URL,一个有效的用户ID和口令传递给它。url,userid和password在类被装载时从一个属性文件里得到(看静态变量声明)。&nbsp;<BR><BR>2.现在到了有挑战性的部分了。我们要作的第一件事是找到已经被分配掉的最后一个客户号码,这样我们可以分配给正在注册的新客户一个新的客户号码(比以前的最高的还要高)。我们要存储这个新的客户号码在一个int变量名为nextId。为了做到这个,你会需要确信使用Statement类和ResultSet类。以下的SQL;&nbsp;<BR><BR>“SELECT&nbsp;MAX(CUSTNO)&nbsp;FORM”+DBOWNER+”.CUSTOMER”&nbsp;<BR><BR>将允许你获得当前最高的客户号。试试自己写这个代码,基于课程笔记的例子。如果你需要帮助,看答案页。&nbsp;<BR><BR>3.接着你将用一个prepared&nbsp;statement对象来把客户属性对象里的信息插入数据库。输入以下的行:&nbsp;<BR><BR>//Insert&nbsp;record&nbsp;in&nbsp;the&nbsp;database&nbsp;<BR><BR>PreparedStatement&nbsp;insertStatement=&nbsp;<BR><BR>conn.prepareStatement(“INSERT&nbsp;INTO”+DBOWNER+”.CUSTOMER(FNAME,LNAME,ADDR,CITY,STATE,AGE,ZIP,CUSTNO)”+”VALUES(?,?,?,?,?,?,?,?)”);&nbsp;<BR><BR>上面的行要求连接创建一个prepared&nbsp;statement对象叫insertStatement。SQL语句作为参数被传递。数据库行的每一列的值用问号代表。每一个问号必须被一个正确类型的值代替。输入以下行:&nbsp;<BR><BR>insertStatement.setString(1,formInput.getProperty(“FNAME”));&nbsp;<BR><BR>insertStatement.setString(2,formInput.getProperty(“LNAME”));&nbsp;<BR><BR>insertStatement.setString(3,formInput.getProperty(“ADDR”));&nbsp;<BR><BR>insertStatement.setString(4,formInput.getProperty(“CITY”));&nbsp;<BR><BR>insertStatement.setString(5,formInput.getProperty(“STATE”));&nbsp;<BR><BR>insertStatement.setString(6,formInput.getProperty(“AGE”));&nbsp;<BR><BR>insertStatement.setString(7,formInput.getProperty(“ZIP”));&nbsp;<BR><BR>insertStatement.setInt(8,nextId);&nbsp;<BR><BR>4.insertStatement执行对数据库的更新。输入下面两行:&nbsp;<BR><BR>insertStatement.executeUpdate();&nbsp;<BR><BR>如果有错误出现在创建连接时,语句或访问数据库,这个方法会抛出一个SQLException。&nbsp;<BR><BR>5.最后你需要存储客户号码到formInput属性对象。输入下面行:&nbsp;<BR><BR>formInput.put(“CUSTNO”,new&nbsp;Integer(nextId).toString());&nbsp;<BR><BR>6.保存方法。应该没有错误。&nbsp;<BR><BR>7.接着你将需要为JKRegister&nbsp;servlet编辑WebSphere配置文件。(编辑”[x:]\IBMVJava\ide\project_resources\IBM&nbsp;WebSphere&nbsp;Test&nbsp;Environment\properties\server\servlet\servletservice\serrvlets.properties”.)&nbsp;<BR><BR>改变看上去这样的行:&nbsp;<BR><BR>servlet.JKRegister.code=com.ibm.waslab.servlet1.RegistrationServlet&nbsp;<BR><BR>为这样:&nbsp;<BR><BR>servlet.JKRegister,code=com.ibm.waslab.JDBC.RegistrationServlet&nbsp;<BR><BR>8.如果你的webserver在运行,关掉它。在VAJ,启动SERunner。打开你的web浏览器,到JK&nbsp;Toys网站的注册页面。在表格里输入注册信息,按注册按钮。你的新的servlet将被调用。登录进JKToys站点确信注册已经发生。你的新的客户号码应该能在数据库找到。&nbsp;<BR><BR><BR><BR>在这个练习你作了什么&nbsp;<BR><BR>在这个练习,你编写了Registration&nbsp;Servlet的register方法。这个方法用JDBC来创建一个新的客户号码,注册一个新的客户到数据库。现在你有了在你的servlets里访问数据库的基本知识。&nbsp;<BR><BR><BR><BR>答案&nbsp;<BR><BR>以下的代码创建一个SQL语句,执行在前一页里定义的SQL查询。&nbsp;<BR><BR><BR><BR>//Get&nbsp;next&nbsp;customer&nbsp;number&nbsp;<BR><BR>Statement&nbsp;sqlStatement=conn.createStatement();&nbsp;<BR><BR>ResultSet&nbsp;result=sqlStatement.executeQuery(“SELECT&nbsp;MAX(CUSTNO)&nbsp;FROM”+DBOWNER+”.CUSTOMER”);&nbsp;<BR><BR>查询的结果被放在ResultSet对象叫result里面。结果的集合包含一个游标,最初指向返回的第一行前面。为了得到查询的值游标必须用next()往前移动。用这个方法,游标只能向前移动。下面几行移动游标到返回的值,增加1。&nbsp;<BR><BR>int&nbsp;nextId=0;&nbsp;<BR><BR>if(result.next()=&nbsp;=true)&nbsp;<BR><BR>{&nbsp;<BR><BR>nextId=result.getInt(1)+1;&nbsp;<BR><BR>}&nbsp;<BR><BR>if检查确定是否有行被返回。如果没有,结果为false。我们不处理错误的情况,但是它可以简单地用把nextId设置为1来处理。我们还可以用ResultSet的方法getInt(String),列的名字为”CUSTNO”,但是因为我们知道只有一列会被返回,我们选择用getInt(int)..&nbsp;<BR><BR><BR><BR></FONT></TD></TR>
  <TR>
    <TD height=5>
      <HR align=center color=#cccccc noShade SIZE=1>
    </TD></TR></TBODY></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -