謝文蘭
(廣東培正學(xué)院 計(jì)算機(jī)科學(xué)與工程系,廣州 510830)
基于java數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)用戶注冊(cè)與登錄界面
謝文蘭
(廣東培正學(xué)院 計(jì)算機(jī)科學(xué)與工程系,廣州 510830)
基于java數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)了一個(gè)用戶登錄與注冊(cè)的界面.介紹了java數(shù)據(jù)庫(kù)連接技術(shù),比較了各種連接方式的優(yōu)缺點(diǎn).分析了在代碼實(shí)現(xiàn)時(shí)遇到的問題,并提出了解決方法,最終完成了用戶注冊(cè)與登錄的功能.
JDBC技術(shù);JDBC-ODBC;SQL語(yǔ)句
目前在人們的生活里離不開各種各樣的用戶注冊(cè)與登錄.我們使用QQ聊天時(shí),必須先登錄QQ,如果沒有QQ號(hào)時(shí),那我們則要先去注冊(cè),擁有一個(gè)QQ號(hào)和相應(yīng)的密碼才能登錄.如果想使用一個(gè)網(wǎng)站的資源,則必須先注冊(cè)成為該網(wǎng)站的新會(huì)員,然后再登錄該網(wǎng)站使用資源.如果要進(jìn)入到一個(gè)系統(tǒng),那你必須有通行證,這個(gè)通行證就是要有進(jìn)入這個(gè)的系統(tǒng)的用戶名和密碼.如果沒有,那也必須先注冊(cè)成為該系統(tǒng)的用戶,然后再登錄系統(tǒng).一般說來(lái),用戶注冊(cè)就是在管理者的數(shù)據(jù)庫(kù)的用戶表里增加一個(gè)新的用戶名和密碼,用戶登錄則是在登錄界面中輸入用戶名和密碼,然后點(diǎn)擊“登錄”按鈕提交信息.數(shù)據(jù)庫(kù)會(huì)檢查它的用戶表里是否存在這樣的一個(gè)用戶名,密碼是否正確.然后根據(jù)各種情況返回給用戶相應(yīng)的信息.
本文介紹了java數(shù)據(jù)庫(kù)的各種連接技術(shù),比較了各種連接方式的優(yōu)缺點(diǎn).并且基于java數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)一個(gè)用戶登錄與注冊(cè)的界面.
Java數(shù)據(jù)庫(kù)連接技術(shù)的簡(jiǎn)稱是JDBC,它提供連接各種常用數(shù)據(jù)庫(kù)的能力.JDBC程序的工作原理如圖1[1].
提供者:sun公司
內(nèi)容:供程序員調(diào)用的接口與類,集成在java.sql和javax.sql包中.
DriverManager:依據(jù)數(shù)據(jù)庫(kù)的不同,管理JDBC驅(qū)動(dòng)
Connection:負(fù)責(zé)連接數(shù)據(jù)庫(kù)并擔(dān)任傳送數(shù)據(jù)的任務(wù)
Statement:由Connection產(chǎn)生、負(fù)責(zé)執(zhí)行SQL語(yǔ)句
ResultSet:負(fù)責(zé)保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果
提供者:sun公司
作用:載入各種不同的JDBC驅(qū)動(dòng)
提供者:數(shù)據(jù)庫(kù)廠商
作用:負(fù)責(zé)連接各種不同的數(shù)據(jù)庫(kù)
圖1 JDBC的工作原理
JDBC驅(qū)動(dòng)將SQL語(yǔ)句轉(zhuǎn)化為一種特定數(shù)據(jù)庫(kù)可解釋的形式,也可以檢索SQL語(yǔ)句的結(jié)果并將結(jié)果轉(zhuǎn)化為等效JDBC API類對(duì)象.JDBC驅(qū)動(dòng)程序只考慮與數(shù)據(jù)庫(kù)之間的訪問,其對(duì)數(shù)據(jù)庫(kù)的任何變化不會(huì)影響到應(yīng)用程序.JDBC支持以下幾種類型的驅(qū)動(dòng)程序[2].
這種驅(qū)動(dòng)將JDBC調(diào)用轉(zhuǎn)換為ODBC的調(diào)用.使用JDBC-ODBC進(jìn)行橋接,分為兩個(gè)步驟:
①在控制面板——ODBC 數(shù)據(jù)源——系統(tǒng)DSN中配置數(shù)據(jù)源.
②編程,通過橋接方式與數(shù)據(jù)庫(kù)建立連接.
優(yōu)點(diǎn):可以訪問所有ODBC可以訪問的數(shù)據(jù)庫(kù),實(shí)現(xiàn)比較簡(jiǎn)單,適用于初學(xué)者.
缺點(diǎn):功能不夠強(qiáng)大.
這種類型的驅(qū)動(dòng)程序?qū)DBC調(diào)用轉(zhuǎn)換為對(duì)數(shù)據(jù)庫(kù)客戶端API的調(diào)用.
①下載數(shù)據(jù)庫(kù)廠商提供的驅(qū)動(dòng)程序包.
②將驅(qū)動(dòng)程序包引入工程中.
優(yōu)點(diǎn):創(chuàng)建于各數(shù)據(jù)庫(kù)特有的客戶端函數(shù)庫(kù)之上,為此其執(zhí)行性能比較好.
缺點(diǎn):兼容性差.
這種驅(qū)動(dòng)先將JDBC調(diào)用轉(zhuǎn)換為DBMS-independent網(wǎng)絡(luò)協(xié)議,然后由服務(wù)器端的中間件轉(zhuǎn)換為具體數(shù)據(jù)庫(kù)服務(wù)器可以接收的網(wǎng)絡(luò)協(xié)議.
優(yōu)點(diǎn):100%java,擴(kuò)展性好,兼容性好.
缺點(diǎn):在同等條件下,這種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序其執(zhí)行性能沒有專屬JDBC驅(qū)動(dòng)程序好.
通過純Java驅(qū)動(dòng)方式與數(shù)據(jù)庫(kù)建立連接 .
優(yōu)點(diǎn):100%java,快又可跨平臺(tái),擴(kuò)展性好,兼容性好.
缺點(diǎn):訪問不同的數(shù)據(jù)庫(kù)需要下載專用的JDBC驅(qū)動(dòng),對(duì)于初學(xué)者來(lái)說比較復(fù)雜.
本文中設(shè)計(jì)的用戶注冊(cè)界面如圖2所示,包含用戶名和兩次密碼的輸入,點(diǎn)擊注冊(cè)按鈕時(shí),會(huì)出現(xiàn)如下幾種情況:
①用戶名或者密碼為空時(shí),會(huì)彈出消息框提示輸入的信息不完整,請(qǐng)重新輸入.
②兩次輸入的密碼不一致時(shí),會(huì)彈出消息框提示密碼輸入不一致,請(qǐng)重新輸入.
③當(dāng)輸入的用戶名在數(shù)據(jù)庫(kù)的用戶表里已經(jīng)存在時(shí),會(huì)彈出消息框提示用戶名已經(jīng)存在,請(qǐng)重新輸入.
④當(dāng)輸入新的用戶名和兩次一致的密碼時(shí),會(huì)彈出消息框提示用戶名注冊(cè)成功,同時(shí)在數(shù)據(jù)庫(kù)的用戶表里添加相應(yīng)的用戶名和密碼.
用戶注冊(cè)界面如圖3所示,功能包含用戶名和密碼的輸入,點(diǎn)擊登錄按鈕時(shí),會(huì)出現(xiàn)如下幾種情況:
①用戶名或者密碼為空時(shí),會(huì)彈出消息框提示輸入的信息不完整,請(qǐng)重新輸入.
②當(dāng)輸入的用戶名在數(shù)據(jù)庫(kù)的用戶表中不存在時(shí),會(huì)彈出消息框提示用戶名不存在,請(qǐng)重新輸入.
③當(dāng)輸入的用戶名在數(shù)據(jù)庫(kù)的用戶表中存在,但輸入的密碼與用戶表的密碼不一致時(shí),會(huì)彈出消息框提示密碼不正確,請(qǐng)重新輸入.
④當(dāng)輸入用戶名和密碼正確時(shí),會(huì)彈出消息框提示用戶名登錄成功,同時(shí)進(jìn)入到相應(yīng)的系統(tǒng)中.
圖2 注冊(cè)界面
圖3 登錄界面
本文要實(shí)現(xiàn)的數(shù)據(jù)庫(kù)功能不是很復(fù)雜,所以選用了使用簡(jiǎn)便的Access數(shù)據(jù)庫(kù)系統(tǒng),驅(qū)動(dòng)方式JDBC-ODBC橋驅(qū)動(dòng)程序.數(shù)據(jù)庫(kù)的名字為user,里面有一張用戶表,用戶表中包含用戶名和密碼兩個(gè)字段.
數(shù)據(jù)庫(kù)的驅(qū)動(dòng)和連接代碼如下:
當(dāng)點(diǎn)擊注冊(cè)時(shí),消息處理代碼如下:
注冊(cè)時(shí),如果輸入的用戶名在用戶表已經(jīng)存在,則會(huì)提示用戶名已經(jīng)存在,請(qǐng)重新輸入.如果輸入了一個(gè)新的用戶名,而且兩次密碼都一致時(shí),需要在數(shù)據(jù)庫(kù)的用戶表中添加相應(yīng)的用戶名和密碼.
登錄的代碼這里就不再詳述了.
本文在實(shí)現(xiàn)注冊(cè)和登錄的功能時(shí),最容易出現(xiàn)的問題往往是SQL語(yǔ)句的編寫.
其中,當(dāng)查詢用戶名在用戶表中是否存在時(shí),SQL語(yǔ)句寫成“select用戶.*from用戶where用戶名=userName”.當(dāng)需要往用戶表里添加新的記錄時(shí),SQL語(yǔ)句寫成“insert into用戶(用戶名,密碼)vulues(userName,password1)”.則在運(yùn)行過程中會(huì)出現(xiàn)如圖4所示的錯(cuò)誤.
圖4 運(yùn)行錯(cuò)誤界面
運(yùn)行提示的錯(cuò)誤是找不到相應(yīng)的數(shù)據(jù)源,但是數(shù)據(jù)庫(kù)已經(jīng)連接上,所以不應(yīng)該是找不到數(shù)據(jù)庫(kù)的問題.經(jīng)分析,最終確定錯(cuò)誤是出現(xiàn)在SQL語(yǔ)句上.SQL語(yǔ)句出現(xiàn)的userName和password1為變量名,本文需要把變量名所表示的內(nèi)容賦給字段名.
當(dāng)把查詢語(yǔ)句改為“select用戶.*from用戶where用戶名=”+“'”+userName+“'”,添加語(yǔ)句改為insert into用戶(用戶名,密碼)values(“+”'“+userName+”'“+”,“+”'“+password1+”'“+”)“時(shí),運(yùn)行就沒有出現(xiàn)錯(cuò)誤了,并且在數(shù)據(jù)庫(kù)的用戶表中成功的添加新的用戶名和密碼以及根據(jù)用戶名和密碼查詢到相應(yīng)的記錄.
本文基于java數(shù)據(jù)庫(kù)技術(shù),實(shí)現(xiàn)了java代碼與ACCESS數(shù)據(jù)庫(kù)相連接,完成了最基本的用戶注冊(cè)與用戶登錄的功能.同時(shí),本文還介紹了java數(shù)據(jù)庫(kù)連接技術(shù),比較了各種連接方式的優(yōu)缺點(diǎn).分析了在代碼實(shí)現(xiàn)時(shí)遇到的問題,并提出了解決方法,最終完成了用戶注冊(cè)與登錄的功能.由于在本文中,數(shù)據(jù)庫(kù)的訪問不是很頻繁,只需要在訪問數(shù)據(jù)庫(kù)時(shí)創(chuàng)建一個(gè)連接,用完后就關(guān)閉它,這樣做不會(huì)明顯的增大系統(tǒng)的開銷.但是對(duì)于一個(gè)復(fù)雜的數(shù)據(jù)庫(kù)系統(tǒng),頻繁的建立、關(guān)閉數(shù)據(jù)庫(kù),會(huì)極大的降低系統(tǒng)的性能,增大系統(tǒng)的開銷,嚴(yán)重時(shí)會(huì)造成服務(wù)器的崩潰[3][4].如何采用運(yùn)行速度更快、數(shù)據(jù)庫(kù)訪問效率更高的數(shù)據(jù)庫(kù)技術(shù),還需要進(jìn)一步研究.
[1]耿詳義,張躍平.java2實(shí)用教程[M].北京:清華大學(xué)出版社,2006.
[2]張白一,崔尚森.面向?qū)ο蟪绦蛟O(shè)計(jì)-JAVA[M].西安:西安電子科技大學(xué)出版社,2003.
[3]習(xí) 磊,周平安.基于JDBC的數(shù)據(jù)庫(kù)連接池高效管理策略[J].計(jì)算機(jī)工程與應(yīng)用,2003(30):203-204.
[4]羅 榮,唐學(xué)兵.基于JDBC的數(shù)據(jù)庫(kù)連接池的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,30(9):92-94.
User Registration and Login Interface Based on Java Database Technology
XIE Wen-lan
(Department of Computer Science and Engineering,Peizheng College,Guangzhou 510830,China)
This paper is based on the Java database technology to achieve a user login and registration interface.In this paper,it introduces the Java database connection technology,and compares the advantages and disadvantages of various connection.It analyses the problems encountered in code implementation,solves the problems and completes the user registration and login function finally.
JDBC;JDBC-ODBC;SQL statement
TP37
A
1671-119X(2014)02-0045-04
2014-01-02
謝文蘭(1984-),女,碩士,講師,研究方向:網(wǎng)絡(luò)工程.