狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

用JDBC訪問一個(gè)數(shù)據(jù)庫

用JDBC訪問一個(gè)數(shù)據(jù)庫

更新時(shí)間:2024-04-09 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

發(fā)布者:flyfox

在這個(gè)練習(xí)里你將學(xué)習(xí)使用JDBC訪問數(shù)據(jù)庫和插入一個(gè)記錄到數(shù)據(jù)庫的基礎(chǔ)知識。

在這個(gè)練習(xí)里,你將寫RegistrationServlet類的register方法。這個(gè)類和你在Servlet1A練習(xí)里用的一樣。在這個(gè)練習(xí)里,你將使用數(shù)據(jù)庫的功能。這個(gè)練習(xí)將展示實(shí)現(xiàn)用戶需求的步驟。

第一部分:理解regsiter()方法在RegistrationServlet中的工作原理

在這個(gè)練習(xí)里,你將在com.ibm.waslab.JDBC包上工作。擴(kuò)展RegistrationServlet類,理解register()。這個(gè)方法拋一個(gè)SQLException。完整的方法聲明是:

public synchronized void register(Properties formInput)

throws SQLException{



}

register()方法在servlet取得控制時(shí)從doPost()方法里被調(diào)用。register()方法實(shí)際上寫一個(gè)新的記錄到數(shù)據(jù)庫。我們將在第二部分寫register()方法。同時(shí),我們需要確信一些設(shè)置步驟已經(jīng)完成。

1.打開init()方法,在super.init()的調(diào)用后面輸入以下的代碼:

//Load JDBC driver for DB2

try

{

Class.forName(JKToysDBInfo.gerDriver());

}

catch (ClassNotFoundException e)

{

erroLog(“JDBC Driver not found”+e);

}



保存init()方法。記住,在驅(qū)動器管理可以得到一個(gè)連接以前,一個(gè)正確的數(shù)據(jù)庫驅(qū)動器必須被servlet裝載。每一個(gè)servlet只在servlet的init()方法里作一次。這個(gè)方法并不真地建立一個(gè)連接,它只是允許連接被建立。



注意:在這個(gè)情況下,我們裝載DB2 app驅(qū)動器。這個(gè)驅(qū)動器是在數(shù)據(jù)庫裝在servlet將要運(yùn)行的同一臺機(jī)器上時(shí)使用的。如果你在訪問另一臺機(jī)器上的數(shù)據(jù)庫,你要使用net驅(qū)動器:

COM.ibm.db2.jdbc.net.DB2Driver

當(dāng)用net驅(qū)動器得到一個(gè)連接,你需要在getConnection()里使用的URL里提供更多的信息。數(shù)據(jù)庫所在的機(jī)器名或URL,和DB2 Java Gateway偵聽的端口號。一個(gè)有效的URL參數(shù)看上去是這樣的:

jdbc:db2://servrid:8888/databasename

第二部分

1.現(xiàn)在,回去,重新打開register()方法。代碼的第一行創(chuàng)建一個(gè)數(shù)據(jù)庫連接:

Connection conn=DriverManager.getConnection(URL,USER,PASSWORD);

你用驅(qū)動器管理器的靜態(tài)方法getConnection(),把數(shù)據(jù)庫的URL,一個(gè)有效的用戶ID和口令傳遞給它。url,userid和password在類被裝載時(shí)從一個(gè)屬性文件里得到(看靜態(tài)變量聲明)。

2.現(xiàn)在到了有挑戰(zhàn)性的部分了。我們要作的第一件事是找到已經(jīng)被分配掉的最后一個(gè)客戶號碼,這樣我們可以分配給正在注冊的新客戶一個(gè)新的客戶號碼(比以前的最高的還要高)。我們要存儲這個(gè)新的客戶號碼在一個(gè)int變量名為nextId。為了做到這個(gè),你會需要確信使用Statement類和ResultSet類。以下的SQL;

“SELECT MAX(CUSTNO) FORM”+DBOWNER+”.CUSTOMER”

將允許你獲得當(dāng)前最高的客戶號。試試自己寫這個(gè)代碼,基于課程筆記的例子。如果你需要幫助,看答案頁。

3.接著你將用一個(gè)prepared statement對象來把客戶屬性對象里的信息插入數(shù)據(jù)庫。輸入以下的行:

//Insert record in the database

PreparedStatement insertStatement=

conn.prepareStatement(“INSERT INTO”+DBOWNER+”.CUSTOMER(FNAME,LNAME,ADDR,CITY,STATE,AGE,ZIP,CUSTNO)”+”VALUES(?,?,?,?,?,?,?,?)”);

上面的行要求連接創(chuàng)建一個(gè)prepared statement對象叫insertStatement。SQL語句作為參數(shù)被傳遞。數(shù)據(jù)庫行的每一列的值用問號代表。每一個(gè)問號必須被一個(gè)正確類型的值代替。輸入以下行:

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執(zhí)行對數(shù)據(jù)庫的更新。輸入下面兩行:

insertStatement.executeUpdate();

如果有錯(cuò)誤出現(xiàn)在創(chuàng)建連接時(shí),語句或訪問數(shù)據(jù)庫,這個(gè)方法會拋出一個(gè)SQLException。

5.最后你需要存儲客戶號碼到formInput屬性對象。輸入下面行:

formInput.put(“CUSTNO”,new Integer(nextId).toString());

6.保存方法。應(yīng)該沒有錯(cuò)誤。

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在運(yùn)行,關(guān)掉它。在VAJ,啟動SERunner。打開你的web瀏覽器,到JK Toys網(wǎng)站的注冊頁面。在表格里輸入注冊信息,按注冊按鈕。你的新的servlet將被調(diào)用。登錄進(jìn)JKToys站點(diǎn)確信注冊已經(jīng)發(fā)生。你的新的客戶號碼應(yīng)該能在數(shù)據(jù)庫找到。



在這個(gè)練習(xí)你作了什么

在這個(gè)練習(xí),你編寫了Registration Servlet的register方法。這個(gè)方法用JDBC來創(chuàng)建一個(gè)新的客戶號碼,注冊一個(gè)新的客戶到數(shù)據(jù)庫。現(xiàn)在你有了在你的servlets里訪問數(shù)據(jù)庫的基本知識。



答案

以下的代碼創(chuàng)建一個(gè)SQL語句,執(zhí)行在前一頁里定義的SQL查詢。



//Get next customer number

Statement sqlStatement=conn.createStatement();

ResultSet result=sqlStatement.executeQuery(“SELECT MAX(CUSTNO) FROM”+DBOWNER+”.CUSTOMER”);

查詢的結(jié)果被放在ResultSet對象叫result里面。結(jié)果的集合包含一個(gè)游標(biāo),最初指向返回的第一行前面。為了得到查詢的值游標(biāo)必須用next()往前移動。用這個(gè)方法,游標(biāo)只能向前移動。下面幾行移動游標(biāo)到返回的值,增加1。

int nextId=0;

if(result.next()= =true)

{

nextId=result.getInt(1)+1;

}

if檢查確定是否有行被返回。如果沒有,結(jié)果為false。我們不處理錯(cuò)誤的情況,但是它可以簡單地用把nextId設(shè)置為1來處理。我們還可以用ResultSet的方法getInt(String),列的名字為”CUSTNO”,但是因?yàn)槲覀冎乐挥幸涣袝环祷兀覀冞x擇用getInt(int)..

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
日韩欧美一级特黄在线播放| 在线观看av不卡| 成人app在线观看| 国产九色精品成人porny | 666欧美在线视频| 亚洲韩国一区二区三区| 国产精品手机视频| 老司机精品视频网站| 色琪琪一区二区三区亚洲区| 影音先锋久久资源网| 在线播放精品| 久久久久久婷| 亚洲免费影视| 欧美一区二区女人| 国产无人区一区二区三区| 欧美国产成人精品| 亚洲第一精品在线| 国产99一区视频免费 | 国产高清不卡一区| 国产精品v欧美精品v日本精品动漫| 欧美国产另类| 欧美性感一类影片在线播放| 91精品在线观看入口| 亚洲欧洲日韩女同| 国产一区二区在线观看视频| 你懂的亚洲视频| 欧美写真视频网站| 国产清纯在线一区二区www| 亚洲一区二区精品久久av| 国产在线播精品第三| 亚洲狼人精品一区二区三区| 日韩片之四级片| 午夜精品久久久久久久久久| 成人开心网精品视频| 中日韩男男gay无套| 国产精品无码永久免费888| 狠狠色狠狠色综合系列| 牛人盗摄一区二区三区视频| 国产精品高潮呻吟久久| 日本伊人午夜精品| 欧美午夜一区| 国产伦精品一区二区三区照片91 | 久久机这里只有精品| 91麻豆精品在线观看| 欧美日韩国产精品自在自线| 视频在线观看91| 欧美午夜精品久久久久免费视| 欧美午夜精品久久久久久孕妇| 国产喷白浆一区二区三区| 国产精品一区二区三区四区| 在线亚洲精品福利网址导航| 麻豆国产欧美日韩综合精品二区| 国产偷自视频区视频一区二区| 国产精品免费丝袜| 99国产精品一区| 国产三级精品三级在线专区| 欧美va亚洲va日韩∨a综合色| 欧美精品一区二区三区蜜桃| 你懂的国产精品| 亚洲另类在线视频| 免费久久99精品国产自| 日韩激情一区二区| 免费看的黄色欧美网站| 日本不卡123| 欧美本精品男人aⅴ天堂| av不卡免费在线观看| 国产精品久久久久久久浪潮网站 | 亚洲一区二区成人在线观看| 老司机精品福利视频| 亚洲欧美日韩精品久久久久| 午夜激情一区| 奇米影视一区二区三区小说| 欧美大度的电影原声| 欧美激情麻豆| 伦理电影国产精品| 精品国产1区二区| 国产精品久久波多野结衣| 毛片一区二区三区| 99re6热在线精品视频播放速度| 一区二区在线观看免费视频播放| 国产1区2区3区精品美女| 日韩色在线观看| 亚洲一区成人| 国产精品资源在线| 亚洲欧美日韩人成在线播放| 久久一区二区三区超碰国产精品| 国产精品88888| 欧美肥妇毛茸茸| 老司机免费视频久久| 99国产精品久久久久久久久久久| 伊人婷婷欧美激情| 国产亚洲精品福利| 欧美高清视频在线高清观看mv色露露十八| 999在线观看精品免费不卡网站| 欧美日韩免费一区二区三区视频| 国产精品一二三区| 日韩av电影天堂| 亚洲图片欧美视频| 欧美精品一区在线观看| 老司机午夜免费精品视频| 亚洲手机视频| 国产一区二区在线观看免费播放| 青青草97国产精品免费观看| 亚洲国产成人精品视频| 国产亚洲欧美日韩日本| 欧美一区二区网站| 欧美日韩久久久久久| 在线视频一区二区免费| 成人精品国产福利| 亚洲综合网站在线观看| 一区二区三区四区精品在线视频| 久久亚区不卡日本| 久久综合九色综合欧美亚洲| 欧美日韩在线一区二区| 色婷婷综合在线| 蜜桃av综合| 精品视频在线看| 亚洲精品一区二区三区四区高清 | 一区二区三区av| 久久亚洲欧洲| 日韩欧美国产综合一区| 精品久久久影院| 日韩欧美一区二区三区在线| 黄色精品网站| 亚洲高清不卡一区| 在线区一区二视频| 久久久久久精| 免费亚洲婷婷| 日韩美女一区二区三区四区| 久久夜色精品一区| 亚洲h精品动漫在线观看| 日韩激情av在线| av不卡免费在线观看| 亚洲欧美激情诱惑| 91精品国产综合久久婷婷香蕉| 久久久久久久久久久99999| 亚洲一区在线播放| 最新日韩av| 亚洲麻豆一区| 国产精品久久久久9999高清| 欧美在线视频全部完| 日本一区二区高清| 成人网页在线观看| 欧美亚一区二区| 国产精品你懂的在线| 国产精品一区二区在线播放| 国产一区再线| 欧美一级久久久| 经典三级一区二区| 麻豆亚洲精品| 图片区小说区区亚洲影院| 99久久久免费精品国产一区二区| 色乱码一区二区三区88| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲一区二区在线免费看| 高清在线不卡av| 老司机午夜精品视频在线观看| 久久久久久麻豆| 成人激情图片网| 欧美一区日韩一区| 国产精品一区二区在线看| 久久久夜夜夜| 婷婷久久综合九色综合伊人色| 欧美区日韩区| 亚洲三级小视频| 禁久久精品乱码| 亚洲第一主播视频| 久久精品一区二区国产| 日本不卡视频在线观看| 欧美午夜精品理论片a级按摩| 免费人成在线不卡| 欧美疯狂性受xxxxx喷水图片| 国产精品一级片在线观看| 91精品婷婷国产综合久久竹菊| 国产伦精品一区二区三区免费迷| 欧美一区二区视频在线观看2020 | 成人午夜激情视频| 国产日韩精品一区二区浪潮av| 91影视在线播放| 亚洲猫色日本管| 久久亚洲国产精品一区二区| 久久国产三级精品| 精品sm在线观看| 久久青青草综合| 成人av网址在线| 亚洲v中文字幕| 在线播放中文一区| 一区免费视频| 黄页网站大全一区二区| 国产欧美一区二区精品仙草咪| 男女精品网站| 粉嫩一区二区三区性色av| 亚洲一区二区三区四区在线| 综合激情成人伊人| 欧美日韩成人在线| 国产精品裸体一区二区三区| 国产电影一区在线| 午夜亚洲国产au精品一区二区| 精品福利二区三区| 69堂亚洲精品首页|