|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。会见|数据|数据库公布者:flyfox
在这个实习里你将进修利用JDBC会见数据库和拔出一个纪录到数据库的基本常识。
在这个实习里,你将写RegistrationServlet类的register办法。这个类和你在Servlet1A实习里用的一样。在这个实习里,你将利用数据库的功效。这个实习将展现完成用户需求的步骤。
第一部分:了解regsiter()办法在RegistrationServlet中的事情道理
在这个实习里,你将在com.ibm.waslab.JDBC包上事情。扩大RegistrationServlet类,了解register()。这个办法抛一个SQLException。完全的办法声明是:
publicsynchronizedvoidregister(PropertiesformInput)
throwsSQLException{
}
register()办法在servlet获得把持时从doPost()办法里被挪用。register()办法实践上写一个新的纪录到数据库。我们将在第二部分写register()办法。同时,我们必要确信一些设置步骤已完成。
1.翻开init()办法,在super.init()的挪用前面输出以下的代码:
//LoadJDBCdriverforDB2
try
{
Class.forName(JKToysDBInfo.gerDriver());
}
catch(ClassNotFoundExceptione)
{
erroLog(“JDBCDrivernotfound”+e);
}
保留init()办法。记着,在驱动器办理能够失掉一个毗连之前,一个准确的数据库驱动器必需被servlet装载。每个servlet只在servlet的init()办法里作一次。这个办法其实不真地创建一个毗连,它只是同意毗连被创建。
注重:在这个情形下,我们装载DB2app驱动器。这个驱动器是在数据库装在servlet将要运转的统一台呆板上时利用的。假如你在会见另外一台呆板上的数据库,你要利用net驱动器:
COM.ibm.db2.jdbc.net.DB2Driver
当用net驱动器失掉一个毗连,你必要在getConnection()里利用的URL里供应更多的信息。数据库地点的呆板名或URL,和DB2JavaGateway侦听的端标语。一个无效的URL参数看上往是如许的:
jdbc:db2://servrid:8888/databasename
第二部分
1.如今,归去,从头翻开register()办法。代码的第一行创立一个数据库毗连:
Connectionconn=DriverManager.getConnection(URL,USER,PASSWORD);
你用驱动器办理器的静态办法getConnection(),把数据库的URL,一个无效的用户ID和口令传送给它。url,userid和password在类被装载时从一个属性文件里失掉(看静态变量声明)。
2.如今到了有应战性的部分了。我们要作的第一件事是找到已被分派失落的最初一个客户号码,如许我们能够分派给正在注册的新客户一个新的客户号码(比之前的最高的还要高)。我们要存储这个新的客户号码在一个int变量名为nextId。为了做到这个,你会必要确信利用Statement类和ResultSet类。以下的SQL;
“SELECTMAX(CUSTNO)FORM”+DBOWNER+”.CUSTOMER”
将同意你取得以后最高的客户号。尝尝本人写这个代码,基于课程条记的例子。假如你必要匡助,看谜底页。
3.接着你将用一个preparedstatement对象来把客户属性对象里的信息拔出数据库。输出以下的行:
//Insertrecordinthedatabase
PreparedStatementinsertStatement=
conn.prepareStatement(“INSERTINTO”+DBOWNER+”.CUSTOMER(FNAME,LNAME,ADDR,CITY,STATE,AGE,ZIP,CUSTNO)”+”VALUES(?,?,?,?,?,?,?,?)”);
下面的行请求毗连创立一个preparedstatement对象叫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”,newInteger(nextId).toString());
6.保留办法。应当没有毛病。
7.接着你将必要为JKRegisterservlet编纂WebSphere设置文件。(编纂”[x:]IBMVJavaideproject_resourcesIBMWebSphereTestEnvironmentpropertiesserverservletservletserviceserrvlets.properties”.)
改动看上往如许的行:
servlet.JKRegister.code=com.ibm.waslab.servlet1.RegistrationServlet
为如许:
servlet.JKRegister,code=com.ibm.waslab.JDBC.RegistrationServlet
8.假如你的webserver在运转,关失落它。在VAJ,启动SERunner。翻开你的web扫瞄器,到JKToys网站的注册页面。在表格里输出注册信息,按注册按钮。你的新的servlet将被挪用。登录进JKToys站点确信注册已产生。你的新的客户号码应当能在数据库找到。
在这个实习你作了甚么
在这个实习,你编写了RegistrationServlet的register办法。这个办法用JDBC来创立一个新的客户号码,注册一个新的客户到数据库。如今你有了在你的servlets里会见数据库的基础常识。
谜底
以下的代码创立一个SQL语句,实行在前一页里界说的SQL查询。
//Getnextcustomernumber
StatementsqlStatement=conn.createStatement();
ResultSetresult=sqlStatement.executeQuery(“SELECTMAX(CUSTNO)FROM”+DBOWNER+”.CUSTOMER”);
查询的了局被放在ResultSet对象叫result内里。了局的汇合包括一个游标,最后指向前往的第一行后面。为了失掉查询的值游标必需用next()往前挪动。用这个办法,游标只能向前挪动。上面几行挪动游标到前往的值,增添1。
intnextId=0;
if(result.next()==true)
{
nextId=result.getInt(1)+1;
}
if反省断定是不是有行被前往。假如没有,了局为false。我们不处置毛病的情形,可是它能够复杂地用把nextId设置为1来处置。我们还能够用ResultSet的办法getInt(String),列的名字为”CUSTNO”,可是由于我们晓得只要一列会被前往,我们选择用getInt(int)..
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 |
|