最近在研究winform,由於這玩意很差用文字描寫,因此就沒寫博客了。不過今天遇到須要大書特書的東西,趕忙記下來省得忘記了。
話說昨天我看了ado.net第一部分的視頻,主要講了SqlConnection,SqlCommand,SqlDataReader。因此我今天就寫了個小程序來測試。期間牽扯到寫入數據庫,根據SQL語句顯示數據等等,其中都要先判斷一個東西sql數據庫的鏈接狀態,當狀態爲Open時候才能進行讀取和寫入數據,當狀態爲Closed時候提示錯誤要求先打開數據庫。
開始我老老實實的在每一個操做前寫if(conn.State.ToString()=="Closed"){},後來一想,爲啥不寫一個方法來判斷當前鏈接狀態,若是是關閉就中斷操做提示錯誤?每一個操做前調用一下就OK了,省時省力。
想法簡單,實現起來有難度,開始寫的是
private
void connzt()

{
if(conn.State.ToString()==
"Closed")

{
break;

}

}
運行報錯,提示沒有課中斷的循環。想了下break確實只能中斷循環。
而後問了問別人,知道須要先定義異常,而後用throw拋出異常,以後在外部try中捕獲這個異常就能夠了。嗯嗯,開幹。
首先定義異常類,從系統異常類中繼承方法再重寫
public
class adoconexp : Exception

{
private
string mymessage;
public adoconexp(
string message)

:
base()

{

mymessage = message;

}
//重寫Message方法
public
override
string Message

{

get

{
return mymessage;

}

}

}
而後定義判斷鏈接的方法調用本身定義的異常類並拋出
private
void connzt()

{
if(conn.State.ToString()==
"Closed")

{
throw
new adoconexp(
"數據庫還在未鏈接!!!!");

}

}
最後在別的方法中調用它
private
void button5_Click(
object sender, EventArgs e)

{
try

{

connzt();
//用判斷方法先判斷一次

MessageBox.Show(
"數據庫是打開的");

}
catch(adoconexp x)
//使用本身定義的異常

{

MessageBox.Show(x.Message);

}

}
有朋友提示,能夠用conn.State==ConnectionState.Closed來判斷是否關閉,這個比我那個方便。
大功告成,嘿嘿。