日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

發布時間:2025/3/17 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本系列文章導航

基于.NET平臺的Windows編程實戰(一)——前言

基于.NET平臺的Windows編程實戰(二)—— 需求分析與數據庫設計

基于.NET平臺的Windows編程實戰(四)—— 數據庫操作類的編寫

基于.NET平臺的Windows編程實戰(五)—— 問卷管理功能的實現

基于.NET平臺的Windows編程實戰(六)—— 題目管理功能的實現

大家都知道本系統的正常運行少不了數據庫操作這一塊,且其在本系統中具有決定性作用,可以說沒有它的操作系統將無法運行,故在本節課程中,專門把針對數據庫的操作類拿出來講講,以便大家更加容易理解后面的課程。

好,進入正題……

首先,我們來新建一個類,方法如下:

打開上一節課我們新建的QuestionnaireSystem項目,右擊項目名,在出現的對話框中選擇“添加”à“類”,在彈出的“添加新項”中選擇“類”,并在下面的“名稱”中輸入DbOperate”,點“添加”,如下圖4-1所示:

?

OK,這樣我們的DbOperate類文件就創建好了,但里面還是空白的,所以我們下面就一起來編寫相應的方法吧。

既然要對數據庫進行操作,我們先要做的第一件事當然是要寫個方法來打開數據庫了。因為我們用的是Access2003數據庫,所以我們得首先要using 進一個System.Data.OleDb 類庫及一個System.Data 類庫,方法:在新建的DbOperate文件的最上面,也就是寫有幾個using …… 地方,寫入如下內容:

?

using System.Data;

using System.Data.OleDb;

?

其次,我們需要定義如下二個數據庫操作對象:

?

protected OleDbConnection dbconn;//定義數據庫連接對象

protected OleDbCommand dbcomm = new OleDbCommand();//定義數據庫操作對象?

?

接下來,我們再寫一個打開數據庫連接的方法:

?

/// <summary>
/// 打開數據庫
/// </summary>
/// <returns></returns>
protected void CreateDbConn()
{
try
{
//捕獲連接異常
string dbpath = @"DataBase\Lj_QuestionnaireSys.mdb";//設置數據庫路徑,如連接有問 題請在前面加上"..\..\",但在發布時要去掉前面的"..\..\"
dbconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + dbpath);//初始化數據庫連接對象
dbcomm.Connection = dbconn;//設置數據庫操作對象使用此dbconn對象
dbconn.Open();//打開數據庫連接
}
catch (OleDbException) //如果出現數據庫連接異常,則關閉數據庫連接并彈出提示框
{
this.CloseDbConn();//關閉數據庫連接
MessageBox.Show("數據連接錯誤!可能是數據庫被刪除了11,請聯系相關技術人員!", "操作提示",? MessageBoxButtons.OK, MessageBoxIcon.Information);
// Console.Write(dbex.Message);

}
catch (Exception) //如果出現其他異常,則關閉數據庫連接并彈出提示框
{
this.CloseDbConn(); //關閉數據庫連接
MessageBox.Show("數據連接錯誤!可能是數據庫被刪除了,請聯系相關技術人員!", "操作提示",? MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

?

數據庫打開了,總不能讓其長期開著吧!故我們還得寫一關閉的方法:

?

/// 關閉數據庫
///
protected void CloseDbConn()
{
if (dbconn.State == ConnectionState.Open) //如果數據庫為打開狀態,則關閉
{
dbconn.Close();
//關閉數據庫連接
}
dbconn.Dispose();
//釋放連接資源
dbcomm.Dispose();//釋放操作資源
}

?

?

?

好,至此,“開門”[打開數據庫]與“關門”[關閉數據庫]的方法都搞定了,下面就讓我們設法在“開門”后“關門”前偷偷的躲進去做點實事吧,即寫一些方法來讀取或更新數據:

?

Code
????????/**////?
????????
///?執行SQL語句
????????
///?
????????
///?傳入的SQL語句

????????public?void?ExcuteSql(string?sqlText)
????????
{
????????????
try
????????????
{//捕獲異常
????????????????CreateDbConn();//建立連接
????????????????dbcomm.CommandType?=?CommandType.Text;//設置操作類型為文本類型
????????????????dbcomm.CommandText?=?sqlText;//設置操作的SQL語句
????????????????dbcomm.ExecuteNonQuery();//執行操作
????????????}

????????????
catch?(Exception)?//如果出現異常,則提示錯誤
????????????{
????????????????MessageBox.Show(
"數據庫操作錯誤!",?"操作提示",?MessageBoxButtons.OK,?MessageBoxIcon.Information);
????????????}

????????????
finally
????????????
{
????????????????CloseDbConn();
//關閉連接
????????????}

????????}

????????
/**////?
????????
///?判斷是否執行成功,返回所影響的行數
????????
///?
????????
///?傳入的SQL語句
????????
///?影響的行數

????????public?int?ExcuteIntSql(string?sqlText)
????????
{
????????????
try
????????????
{//捕獲異常
????????????????CreateDbConn();//建立連接
????????????????dbcomm.CommandType?=?CommandType.Text;//設置操作類型
????????????????dbcomm.CommandText?=?sqlText;//設置操作的SQL語句
????????????????return?dbcomm.ExecuteNonQuery();//執行操作,并返回影響的行數
????????????}

????????????
catch?(Exception)?
????????????
{
????????????????
//MessageBox.Show("數據庫操作錯誤!",?"操作提示",?MessageBoxButtons.OK,?MessageBoxIcon.Information);
????????????????return?0;//如果出現異常,則返回0
??????????????
????????????}

????????????
finally
????????????
{
????????????????CloseDbConn();
//關閉連接
????????????}
?
????????}

????????
/**////?
????????
///?返回查詢出的單條數字記錄結果
????????
///?
????????
///?傳入的SQL語句
????????
///?查詢出的數字結果

????????public?int?ExcuteScrSql(string?sqlText)
????????
{
????????????
try
????????????
{//捕獲異常
????????????????CreateDbConn();//建立連接
????????????????dbcomm.CommandType?=?CommandType.Text;//設置操作類型
????????????????dbcomm.CommandText?=?sqlText;//設置操作的SQL語句
????????????????return?Convert.ToInt32(dbcomm.ExecuteScalar());//執行操作,并返回查詢出的結果
????????????}

????????????
catch?(Exception)?
????????????
{
????????????????
return?0;//如果出現異常,則返回0
????????????}

????????????
finally
????????????
{
????????????????CloseDbConn();
//關閉連接
????????????}

????????}

????????
/**////?
????????
///?返回查詢出的單條文字記錄結果
????????
///?
????????
///?傳入的SQL語句
????????
///?查詢出的文字結果

????????public?string?ExcuteStrScrSql(string?sqlText)
????????
{
????????????
try
????????????
{//捕獲異常
????????????????CreateDbConn();//建立連接
????????????????dbcomm.CommandType?=?CommandType.Text;//設置操作類型
????????????????dbcomm.CommandText?=?sqlText;//設置操作的SQL語句
????????????????return?dbcomm.ExecuteScalar().ToString();//執行操作,并返回查詢出的結果
????????????}

????????????
catch?(Exception)
????????????
{
????????????????
return?"";//如果出現異常,則返回空字符串
????????????}

????????????
finally
????????????
{
????????????????CloseDbConn();
//關閉連接
????????????}

????????}

????????
/**////?
????????
///?返回查詢出的數據表
????????
///?
????????
///?傳入的SQL語句
????????
///?查詢出的數據表

????????public?DataTable?GetDataTable(string?sqlText)
????????
{
????????????OleDbDataAdapter?dbdapt?
=?new?OleDbDataAdapter();//實例化一個數據緩存適配器
????????????DataTable?dt?=?new?DataTable();//實例化一個數據表

????????????
try
????????????
{//捕獲異常
????????????????CreateDbConn();//建立連接
????????????????dbcomm.CommandType?=?CommandType.Text;//設置操作類型
????????????????dbcomm.CommandText?=?sqlText;//設置操作的SQL語句
????????????????dbdapt.SelectCommand?=?dbcomm;//執行SQL語句,選擇出數據
????????????????dbdapt.Fill(dt);//填充數據表
????????????}

????????????
catch?(Exception)
????????????
{

????????????}

????????????
finally
????????????
{
????????????????CloseDbConn();
//關閉連接
????????????}

????????????
return?dt;//返回查詢出的數據表
????????}

????????
/**////?
????????
///?按指定條數讀出的Table數據表
????????
///?
????????
///?傳入的SQL
????????
///?開始讀數據的記錄號
????????
///?所要讀出的最大條數
????????
///?返回一數據表

????????public?DataTable?GetPageDataTable(string?sqlText,int?pre,int?maxcunt)
????????
{
????????????OleDbDataAdapter?dbdapt?
=?new?OleDbDataAdapter();//實例化一個數據緩存適配器
????????????DataSet?ds?=?new?DataSet();//實例化一個數據緩存器

????????????
try
????????????
{//捕獲異常
????????????????CreateDbConn();//建立連接
????????????????dbcomm.CommandType?=?CommandType.Text;//設置操作類型
????????????????dbcomm.CommandText?=?sqlText;//設置操作的SQL語句
????????????????dbdapt.SelectCommand?=?dbcomm;//執行操作,選擇出數據
????????????????dbdapt.Fill(ds,pre,maxcunt,"db_Table");//按指定的條數填充數據表
????????????}

????????????
catch?(Exception)
????????????
{

????????????}

????????????
finally
????????????
{
????????????????CloseDbConn();
//關閉連接
????????????}

????????????
return?ds.Tables["db_Table"];//返回數據表
????????}

//以下為合并統計的數據庫操作?以下注釋同上面的差不多,就不再寫了
????????OleDbConnection?conn;
????????OleDbCommand?comm?
=?new?OleDbCommand();
????????
/**////?
????????
///?連接數據庫--合并統計用
????????
///?

????????public?void?DbConn()
????????
{
????????????
try
????????????
{?
????????????????
string?_dbpath?=?@"DataBase\1.mdb";
????????????????conn?
=?new?OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data?Source="?+?_dbpath);
????????????????comm.Connection?
=?conn;
????????????????conn.Open();
????????????????
//MessageBox.Show(_dbpath);
????????????}

????????????
catch?(OleDbException)
????????????
{
????????????????CloseConn();
????????????????MessageBox.Show(
"數據庫連接錯誤!請檢查數據庫!",?"操作提示",?MessageBoxButtons.OK,?MessageBoxIcon.Information);
????????????}

????????????
catch?(Exception)
????????????
{
????????????????CloseConn();
????????????????MessageBox.Show(
"數據庫連接錯誤!請檢查數據庫!",?"操作提示",?MessageBoxButtons.OK,?MessageBoxIcon.Information);
????????????}


????????}

????????
/**////?
????????
///?關閉數據庫--合并統計用
????????
///?

????????public?void?CloseConn()
????????
{
????????????
if?(conn.State?==?ConnectionState.Open)
????????????
{
????????????????conn.Close();
????????????}

????????????conn.Dispose();

????????????comm.Dispose();
????????}

????????
/**////?
????????
///?返回數據表--合并統計用
????????
///?
????????
///?
????????
///?

????????public?DataTable?GetTable(string?sqlText)
????????
{
????????????OleDbDataAdapter?odbad?
=?new?OleDbDataAdapter();
????????????DataTable?dt?
=?new?DataTable();
????????????
try
????????????
{
????????????????DbConn();
????????????????comm.CommandType?
=?CommandType.Text;
????????????????comm.CommandText?
=?sqlText;
????????????????odbad.SelectCommand?
=?comm;
????????????????odbad.Fill(dt);
????????????}

????????????
catch?(OleDbException)
????????????
{
????????????????MessageBox.Show(
"數據庫連接錯誤!請選擇正確的數據庫!",?"操作提示",?MessageBoxButtons.OK,?MessageBoxIcon.Information);
????????????}

????????????
catch?(Exception)
????????????
{
????????????????MessageBox.Show(
"數據庫連接錯誤!請選擇正確的數據庫!",?"操作提示",?MessageBoxButtons.OK,?MessageBoxIcon.Information);
????????????}

????????????
finally
????????????
{
????????????????CloseConn();
????????????}

????????????
return?dt;
????????}

????????
/**////?
????????
///?返回查詢的結果(Int)--合并統計用
????????
///?
????????
///?傳入的SQL
????????
///?Int

????????public?int?ExcueteIntSql(string?sqlText)
????????
{
????????????
try
????????????
{
????????????????DbConn();
????????????????comm.CommandText?
=?sqlText;
????????????????
return?Convert.ToInt32(comm.ExecuteScalar());
????????????}

????????????
catch?(Exception)
????????????
{
????????????????
return?0;
????????????}

????????????
finally
????????????
{
????????????????CloseConn();
????????????}


????????}

?

OK!到此,整個類算是完工了,雖然不好[沒進行性能方面的優化,也沒引入存儲過程的操作等等],但對于基本的操作已經夠用的了,故在此不作這方面的討論;
??? 在后期的其它系列課程中,我打算專門寫一系列針對數據庫操作優化類的課程,到那時我們再拿出來一起討論^_^

本課就先到此吧,謝謝……

附,本課程源碼下載

總結

以上是生活随笔為你收集整理的艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。