來(lái)源:賈繼康 發(fā)布時(shí)間:2018-11-03 17:06:03 閱讀量:1323
文章目錄
捕獲數(shù)據(jù)庫(kù)未查到數(shù)據(jù)異常處理
前言
準(zhǔn)備工作
思路分析
流程圖分析
代碼分析
說(shuō)明
捕獲數(shù)據(jù)庫(kù)未查到數(shù)據(jù)異常處理
前言
當(dāng)用戶查數(shù)據(jù)庫(kù)中的表單以此驗(yàn)證表單中是否和即將要插入的數(shù)據(jù)重復(fù),捕獲重復(fù)的數(shù)據(jù)以此來(lái)統(tǒng)計(jì)重復(fù)數(shù)據(jù)的個(gè)數(shù)。
此次博主要做的就是進(jìn)行分析獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)查重,捕獲異常(自定義異常譬如:將重復(fù)的數(shù)據(jù)作為異常處理),分析這個(gè)過程。
準(zhǔn)備工作
使用的數(shù)據(jù)庫(kù):mysql
假設(shè)表單名是:user_list.jsp
表單結(jié)構(gòu)如下所示:
思路分析
連接數(shù)據(jù)庫(kù)
進(jìn)行查表單操作
判斷自定義異常
進(jìn)行統(tǒng)計(jì)異常(這里博主要是統(tǒng)計(jì)重復(fù)的數(shù)據(jù)的條數(shù))
關(guān)閉數(shù)據(jù)庫(kù)
流程圖分析
代碼分析
連接數(shù)據(jù)庫(kù)
boolean ok=false; //成功操作則此標(biāo)志轉(zhuǎn)為true
//用于記錄查詢電話號(hào)碼是否已經(jīng)被用過
String s_id="",s_user_name="";
//下面使用JNDI數(shù)據(jù)庫(kù)連接池連接到MySQL服務(wù)器
Connection my_con=null;
try
{
String my_dbdriver=com_station_datebase_driver; //MYSQL 5.0 用的JDBC驅(qū)動(dòng)
String my_url=com_station_datebase_url; //MYSQL數(shù)據(jù)庫(kù)名為dqz_mysql_test
String my_username=com_station_datebase_user; //數(shù)據(jù)庫(kù)管理用戶
String my_password=com_station_datebase_password; //數(shù)據(jù)庫(kù)管理密碼
Class.forName(my_dbdriver); //裝載驅(qū)動(dòng)程序
my_con=DriverManager.getConnection(my_url,my_username,my_password); //連接數(shù)據(jù)庫(kù)
//建立遠(yuǎn)程視圖
Statement my_stmt=my_con.createStatement();
err_code="0x01"; //成功執(zhí)行到獲取了遠(yuǎn)程視圖
String my_sql;
//注意:因?yàn)镾QL中規(guī)定字符串值(String變量或字符串常量)必須用單引號(hào)''括起來(lái),
//所以下面的jsp程序中在SQL語(yǔ)句中傳遞的字符串不能使用雙引號(hào),而用了單引號(hào)。
//發(fā)送并執(zhí)行SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
以上是連接數(shù)據(jù)庫(kù)主要核心代碼示例
查詢語(yǔ)句
// 查詢此用戶名稱是否存在
my_sql="select id from user_list where user_name='"+in_user_name+"' limit 0,1";
//調(diào)試
//System.out.println("my_sql="+my_sql);
ResultSet my_rs=my_stmt.executeQuery(my_sql); //執(zhí)行查詢
err_code="0x02"; //成功執(zhí)行了查詢語(yǔ)句
ok=my_rs.next();
//System.out.println("ok="+ok);
1
2
3
4
5
6
7
8
9
10
11
以上代碼就是進(jìn)行數(shù)據(jù)庫(kù)查找語(yǔ)句的操作。
判別存在重復(fù)數(shù)據(jù)與否
if(ok)
{
my_rs.close(); //關(guān)閉結(jié)果集
err_code="0x03_user_name"; //成功讀取了結(jié)果集
throw new Exception("『back::_self』用戶名稱【"+in_user_name+"】已經(jīng)被序號(hào)注冊(cè)使用,請(qǐng)查證后重新進(jìn)行用戶注冊(cè)!");
// 統(tǒng)計(jì)重復(fù)數(shù)據(jù)的個(gè)數(shù)
}
else
{
// 否則可以注冊(cè)
// 添加新的用戶
// my_sql="insert into user_list(user_name,password,tel,email,qq,note) values('"+in_user_name+"','"+in_password+"','"+in_tel+"','"+in_email+"','"+in_qq+"','"+in_note+"')";
my_sql="insert into user_list(user_name,password,tel,email,qq,note,ssjf_id) values('"+in_user_name+"','"+in_password+"','"+in_tel+"','"+in_email+"','"+in_qq+"','"+in_note+"','"+s_ssjf_add_id2+"')";
//調(diào)試
//System.out.println("my_sql="+my_sql);
my_stmt.executeUpdate(my_sql); //執(zhí)行插入語(yǔ)句
err_code="0x06"; //成功執(zhí)行了插入語(yǔ)句
//寫入管理員日志
String login_IP=request.getRemoteAddr(); //獲取登陸用戶的IP地址
dqz_time t=new dqz_time(); //獲取登錄時(shí)間戳
my_sql="insert into user_log(user_id,user_name,user_ip,log_info,type) values('"+session_user_id+"','"+session_user_name+"','"+login_IP+"','成功添加了用戶【"+in_user_name+"】 ,電話號(hào)碼【"+in_tel+"】','添加用戶')";
my_stmt.executeUpdate(my_sql); //執(zhí)行插入語(yǔ)句
err_code="0x07"; //成功執(zhí)行了插入語(yǔ)句
//處理成功
ok=true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
以上的代碼是本文要說(shuō)明的核心,在下面就是進(jìn)行一個(gè)判斷,重點(diǎn)是在為符合查重條件時(shí)就統(tǒng)計(jì)重復(fù)數(shù)據(jù)的個(gè)數(shù),之前老師一直說(shuō)如果不符合條件就拋出異常呀,老實(shí)說(shuō),我聽懂老師要表達(dá)的意思,但是我不理解老師想要實(shí)現(xiàn)的方法是怎樣的,什么是拋出異常呀?正如同下面代碼就是拋出異常同時(shí)統(tǒng)計(jì)個(gè)數(shù)。
if(ok)
{
my_rs.close(); //關(guān)閉結(jié)果集
err_code="0x03_user_name"; //成功讀取了結(jié)果集
throw new Exception("『back::_self』用戶名稱【"+in_user_name+"】已經(jīng)被序號(hào)注冊(cè)使用,請(qǐng)查證后重新進(jìn)行用戶注冊(cè)!");
// 統(tǒng)計(jì)重復(fù)數(shù)據(jù)的個(gè)數(shù)
i++;//這里我只是做一個(gè)演示,以此來(lái)統(tǒng)計(jì)個(gè)數(shù)
}
1
2
3
4
5
6
7
8
9
而在符合條件時(shí)就執(zhí)行else{}中的插入語(yǔ)句代碼。
---------------------
作者:賈繼康
來(lái)源:CSDN
原文:https://blog.csdn.net/Jiajikang_jjk/article/details/83026282
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
在線
客服
服務(wù)時(shí)間:周一至周日 08:30-18:00
選擇下列產(chǎn)品馬上在線溝通:
客服
熱線
7*24小時(shí)客服服務(wù)熱線
關(guān)注
微信
關(guān)注官方微信