【mysql+java】捕獲資料庫中未查到資料進行異常處理
阿新 • • 發佈:2018-12-15
文章目錄
捕獲資料庫未查到資料異常處理
前言
當用戶查資料庫中的表單以此驗證表單中是否和即將要插入的資料重複,捕獲重複的資料以此來統計重複資料的個數。
此次博主要做的就是進行分析獲取資料庫中的資料查重,捕獲異常(自定義異常譬如:將重複的資料作為異常處理),分析這個過程。
準備工作
- 使用的資料庫:mysql
- 假設表單名是:
user_list.jsp
- 表單結構如下所示:
思路分析
- 連線資料庫
- 進行查表單操作
- 判斷自定義異常
- 進行統計異常(這裡博主要是統計重複的資料的條數)
- 關閉資料庫
流程圖分析
程式碼分析
- 連線資料庫
boolean ok=false; //成功操作則此標誌轉為true
//用於記錄查詢電話號碼是否已經被用過
String s_id="",s_user_name="";
//下面使用JNDI資料庫連線池連線到MySQL伺服器
Connection my_con=null;
try
{
String my_dbdriver=com_station_datebase_driver; //MYSQL 5.0 用的JDBC驅動
String my_url=com_station_datebase_url; //MYSQL資料庫名為dqz_mysql_test
String my_username=com_station_datebase_user; //資料庫管理使用者
String my_password=com_station_datebase_password; //資料庫管理密碼
Class.forName(my_dbdriver); //裝載驅動程式
my_con=DriverManager.getConnection(my_url,my_username,my_password); //連線資料庫
//建立遠端檢視
Statement my_stmt=my_con.createStatement();
err_code= "0x01"; //成功執行到獲取了遠端檢視
String my_sql;
//注意:因為SQL中規定字串值(String變數或字串常量)必須用單引號''括起來,
//所以下面的jsp程式中在SQL語句中傳遞的字串不能使用雙引號,而用了單引號。
//傳送並執行SQL
以上是連線資料庫主要核心程式碼示例
- 查詢語句
// 查詢此使用者名稱稱是否存在
my_sql="select id from user_list where user_name='"+in_user_name+"' limit 0,1";
//除錯
//System.out.println("my_sql="+my_sql);
ResultSet my_rs=my_stmt.executeQuery(my_sql); //執行查詢
err_code="0x02"; //成功執行了查詢語句
ok=my_rs.next();
//System.out.println("ok="+ok);
以上程式碼就是進行資料庫查詢語句的操作。
- 判別存在重複資料與否
if(ok)
{
my_rs.close(); //關閉結果集
err_code="0x03_user_name"; //成功讀取了結果集
throw new Exception("『back::_self』使用者名稱稱【"+in_user_name+"】已經被序號註冊使用,請查證後重新進行使用者註冊!");
// 統計重複資料的個數
}
else
{
// 否則可以註冊
// 新增新的使用者
// 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+"')";
//除錯
//System.out.println("my_sql="+my_sql);
my_stmt.executeUpdate(my_sql); //執行插入語句
err_code="0x06"; //成功執行了插入語句
//寫入管理員日誌
String login_IP=request.getRemoteAddr(); //獲取登陸使用者的IP地址
dqz_time t=new dqz_time(); //獲取登入時間戳
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+"】 ,電話號碼【"+in_tel+"】','新增使用者')";
my_stmt.executeUpdate(my_sql); //執行插入語句
err_code="0x07"; //成功執行了插入語句
//處理成功
ok=true;
}
以上的程式碼是本文要說明的核心,在下面就是進行一個判斷,重點是在為符合查重條件時就統計重複資料的個數,之前老師一直說如果不符合條件就丟擲異常呀,老實說,我聽懂老師要表達的意思,但是我不理解老師想要實現的方法是怎樣的,什麼是丟擲異常呀?正如同下面程式碼就是丟擲異常同時統計個數。
if(ok)
{
my_rs.close(); //關閉結果集
err_code="0x03_user_name"; //成功讀取了結果集
throw new Exception("『back::_self』使用者名稱稱【"+in_user_name+"】已經被序號註冊使用,請查證後重新進行使用者註冊!");
// 統計重複資料的個數
i++;//這裡我只是做一個演示,以此來統計個數
}
而在符合條件時就執行else{}中的插入語句程式碼
。
說明
此篇博文重點是在理解捕獲異常,統計異常處理,對於使用者來說,當然是看到最直觀的前臺頁面顯示異常的詳細資訊,而此次針對博主的需求是在理解這個捕獲異常的思路,實現統計異常個數方法。