动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库学院 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.在Oracle9i中计算时间差.
.如何设置一个邮件地址的控制者.
.如何收集Oracle进程中的sql跟踪信.
.ORACLE在HP-UX下的系列问题处理(.
.如何在Windows 2000下将Oracle完.
.如何自动获取Oracle数据库启动时.
.资源管理: 图形+数据.
.创建实体化视图产生ORA-600 [ksm.
.Oracle IBM 化对手为伙伴 结盟共.
.ORACLE坏块(ORA-01578)处理方法.
.本地管理表空间与字典管理表空间.
.redhat 6.2下 Oracle8.1.6I+ APA.
.Oracle数据库技术(41).
.DNS配置问答集.
.让我们一起学做业余DBA!.
.利用Oracle解析函数快速检查序列.
.Oracle作业(JOB)更新next_date的.
.一起学习在linux下使用汇编语言(.
.oracle 导出数据再压缩.
.Oracle 9i 在Red Hat Linux 8.0下.

用JDBC访问一个数据库

文章类别:Oracle教程 | 发表日期:2008-2-9 |



  在这个练习里你将学习使用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)..

上一篇:Linux下的LDAP 人气:293
下一篇:通过socket访问数据库 人气:260
点击此处浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-16 乘风多用户PHP统计系统 v3.4
2008-5-16 轩溪下载系统 v3.78 build 0515
2008-5-16 普沙B2B 浙江省商贸网 v2.0
2008-5-16 asp抓蜘蛛的小程序 v1.0
2008-5-16 齐齐乐网私服发布站 仿haosf新版
2008-5-16 IssTech信息反馈系统 v1.0
2008-5-16 自由领域大头贴(js接口版) 修正版
2008-5-16 医院网站系统
2008-5-16 智拓-分类信息管理系统 v5.0
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報