中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

異步的 SQL 數據庫封裝(1)
來源:易賢網 閱讀:1682 次 日期:2015-08-31 15:37:13
溫馨提示:易賢網小編為您整理了“異步的 SQL 數據庫封裝(1)”,方便廣大網友查閱!

引言

我一直在尋找一種簡單有效的庫,它能在簡化數據庫相關的編程的同時提供一種異步的方法來預防死鎖。

我找到的大部分庫要么太繁瑣,要么靈活性不足,所以我決定自己寫個。

使用這個庫,你可以輕松地連接到任何 SQL-Server 數據庫,執行任何存儲過程或 T-SQL 查詢,并異步地接收查詢結果。這個庫采用 C# 開發,沒有其他外部依賴。

背景

你可能需要一些事件驅動編程的背景知識,但這不是必需的。

使用

這個庫由兩個類組成:

BLL (Business Logic Layer) 提供訪問MS-SQL數據庫、執行命令和查詢并將結果返回給調用者的方法和屬性。你不能直接調用這個類的對象,它只供其他類繼承.

DAL (Data Access Layer) 你需要自己編寫執行SQL存儲過程和查詢的函數,并且對于不同的表你可能需要不同的DAL類。

首先,你需要像這樣創建 DAL 類:

namespace SQLWrapper

{

public class DAL : BLL

{

public DAL(string server, string db, string user, string pass)

{

base.Start(server, db, user, pass);

}

~DAL()

{

base.Stop(eStopType.ForceStopAll);

}

///////////////////////////////////////////////////////////

// TODO: Here you can add your code here...

}

}

由于BLL類維護著處理異步查詢的線程,你需要提供必要的數據來拼接連接字符串。千萬別忘了調用`Stop`函數,否則析構函數會強制調用它。

NOTE:如果需要連接其他非MS-SQL數據庫,你可以通過修改BLL類中的`CreateConnectionString`函數來生成合適的連接字符串。

為了調用存儲過程,你應該在DAL中編寫這種函數:

public int MyStoreProcedure(int param1, string param2)

{

// 根據存儲過程的返回類型創建用戶數據

StoredProcedureCallbackResult userData = new StoredProcedureCallbackResult(eRequestType.Scalar);

// 在此定義傳入存儲過程的參數,如果沒有參數可以省略 <span style="line-height:1.5;font-size:9pt;">userData.Parameters = new System.Data.SqlClient.SqlParameter[] { </span>

new System.Data.SqlClient.SqlParameter("@param1", param1),

new System.Data.SqlClient.SqlParameter("@param2", param2),

};

// Execute procedure...

if (!ExecuteStoredProcedure("usp_MyStoreProcedure", userData))

throw new Exception("Execution failed");

// 等待執行完成...

// 等待時長為 <userdata.tswaitforresult>

// 執行未完成返回 <timeout>

if (WaitSqlCompletes(userData) != eWaitForSQLResult.Success)

throw new Exception("Execution failed");

// Get the result...

return userData.ScalarValue;

}

正如你所看到的,存儲過程的返回值類型可以是`Scalar`,`Reader`和`NonQuery`。對于 `Scalar`,`userData`的`ScalarValue`參數有意義(即返回結果);對于`NonQuery`,`userData`的 `AffectedRows`參數就是受影響的行數;對于`Reader`類型,`ReturnValue`就是函數的返回值,另外你可以通過 `userData`的`resultDataReader`參數訪問recordset。

再看看這個示例:

public bool MySQLQuery(int param1, string param2)

{

// Create user data according to return type of store procedure in SQL(這個注釋沒有更新,說明《注釋是魔鬼》有點道理)

ReaderQueryCallbackResult userData = new ReaderQueryCallbackResult();

string sqlCommand = string.Format("SELECT TOP(1) * FROM tbl1

WHERE code = {0} AND name LIKE &apos;%{1}%&apos;", param1, param2);

// Execute procedure...

if (!ExecuteSQLStatement(sqlCommand, userData))

return false;

// Wait until it finishes...

// Note, it will wait (userData.tsWaitForResult)

// for the command to be completed otherwise returns <timeout>

if (WaitSqlCompletes(userData) != eWaitForSQLResult.Success)

return false;

// Get the result...

if(userData.resultDataReader.HasRows && userData.resultDataReader.Read())

{

// Do whatever you want....

int field1 = GetIntValueOfDBField(userData.resultDataReader["Field1"], -1);

string field2 = GetStringValueOfDBField(userData.resultDataReader["Field2"], null);

Nullable<datetime> field3 = GetDateValueOfDBField(userData.resultDataReader["Field3"], null);

float field4 = GetFloatValueOfDBField(userData.resultDataReader["Field4"], 0);

long field5 = GetLongValueOfDBField(userData.resultDataReader["Field5"], -1);

}

userData.resultDataReader.Dispose();

return true;

}

在這個例子中,我們調用 `ExecuteSQLStatement` 直接執行了一個SQL查詢,但思想跟 `ExecuteStoredProcedure` 是一樣的。

我們使用 `resultDataReader` 的 `.Read()` 方法來迭代處理返回的結果集。另外提供了一些helper方法來避免疊代中由于NULL字段、GetIntValueOfDBField 等引起的異常。

更多信息請查看數據庫
易賢網手機網站地址:異步的 SQL 數據庫封裝(1)
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产一区二区三区在线观看视频| 国产三级精品三级| 国产精品久久久一区二区| 小辣椒精品导航| 极品少妇一区二区三区| 欧美日韩大片一区二区三区| 亚洲天堂网在线观看| 国产精品都在这里| 欧美吻胸吃奶大尺度电影| 久久久噜噜噜久久久| 欧美中文字幕不卡| 欧美成人免费视频| 国产精品家教| 亚洲精品视频一区| 亚洲一区二区三区精品在线观看| 亚洲一区二区成人在线观看| 欧美wwwwww| 国内精品久久久久久久影视麻豆| 亚洲欧美国产精品va在线观看| 欧美韩日一区| 亚洲大胆在线| 另类综合日韩欧美亚洲| 亚洲天堂av图片| 精品成人在线观看| 午夜国产精品影院在线观看| 欧美日韩一区二区在线视频 | 欧美大色视频| 禁久久精品乱码| 久久精品麻豆| 国产一区二区三区久久| 久久久av网站| 在线成人av网站| 美女精品在线观看| 亚洲欧洲日产国产综合网| 嫩草国产精品入口| avtt综合网| 国产精品成人aaaaa网站| 亚洲性夜色噜噜噜7777| 国产精品视频自拍| 欧美一区二区三区四区在线 | 国产精品swag| 亚洲综合国产激情另类一区| 国产精品爽爽爽| 久久se精品一区精品二区| 韩国三级电影久久久久久| 在线一区二区三区四区| 欧美日韩一区二区三区免费| 亚洲综合三区| 国产亚洲欧美日韩精品| 久久一综合视频| 一区二区三区不卡视频在线观看| 国产精品免费福利| 美女脱光内衣内裤视频久久网站| 99成人在线| 国内伊人久久久久久网站视频 | 久久视频国产精品免费视频在线| 极品少妇一区二区三区| 欧美午夜激情视频| 久久免费精品日本久久中文字幕| 一本久久综合亚洲鲁鲁| 国产一区91| 欧美日韩在线亚洲一区蜜芽| 久久久久久久一区二区| 亚洲一区二区三区四区中文| 亚洲国产第一| 国产自产在线视频一区| 欧美日韩影院| 欧美成人蜜桃| 久久黄金**| 亚洲欧美一区二区原创| 亚洲日本va午夜在线影院| 国产日韩欧美在线观看| 国产精品va在线| 欧美激情欧美激情在线五月| 久久精品国产一区二区电影| 亚洲资源在线观看| 99在线热播精品免费99热| 亚洲国产免费| 国产一区二区三区精品久久久| 欧美特黄一级| 欧美日韩精品| 欧美精品18videos性欧美| 美女国产一区| 久久亚洲春色中文字幕| 久久精品女人天堂| 香蕉久久夜色精品| 亚洲综合第一| 亚洲一区二区精品在线| 一本色道久久| 一本久久综合亚洲鲁鲁| 一本色道久久综合狠狠躁篇怎么玩| 亚洲国产精品精华液网站| 在线观看视频一区| 在线日韩中文字幕| 1769国产精品| 亚洲精品看片| 一区二区三区视频在线| 亚洲午夜在线观看视频在线| 亚洲深夜av| 欧美一区二区福利在线| 久久精品国产免费| 蜜臀久久久99精品久久久久久| 免费精品99久久国产综合精品| 欧美成人第一页| 欧美日韩免费一区| 国产精品视频网| 激情亚洲网站| 亚洲蜜桃精久久久久久久| 亚洲午夜一区| 欧美一区二区三区免费观看视频| 一区二区三区www| 性8sex亚洲区入口| 久久人人爽人人爽爽久久| 欧美国产精品v| 欧美日韩在线不卡| 国产欧美日韩专区发布| 国语对白精品一区二区| 亚洲国产91| 亚洲私人影院| 亚洲国产精彩中文乱码av在线播放| 亚洲卡通欧美制服中文| 国产精品久久久久久久久搜平片| 免费欧美在线视频| 亚洲电影在线免费观看| 久久电影一区| 亚洲私人影院在线观看| 欧美日韩成人在线| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩专区| 久久久久久久久综合| 一区二区在线观看av| 欧美激情一二三区| 亚洲综合色网站| 激情欧美一区二区| 欧美在线一二三区| 亚洲每日在线| 国产精品日韩欧美大师| 久久午夜电影网| 99视频精品免费观看| 国产精品视频免费观看| 久久riav二区三区| 亚洲精品在线视频| 国产精品一区二区三区乱码 | 欧美电影免费观看高清完整版| 亚洲精品一区二区三| 黑人巨大精品欧美一区二区| 欧美日韩国产精品一区二区亚洲| 欧美一区二区三区日韩| 亚洲国产视频一区| 国产乱人伦精品一区二区| 久久久久久久久蜜桃| 亚洲午夜女主播在线直播| 亚洲日本中文| 激情欧美一区二区三区| 国产精品私房写真福利视频| 欧美日韩国产成人高清视频| 久久精品一二三区| 亚洲一级片在线观看| 亚洲成色999久久网站| 国产在线一区二区三区四区| 欧美日韩大片一区二区三区| 亚洲一区二区三区三| 亚洲黄色影院| 一区在线播放| 伊人色综合久久天天| 国外成人性视频| 国产自产女人91一区在线观看| 国产精品―色哟哟| 国产精品美女久久久免费| 国产精品久久久久av| 欧美日韩国产小视频| 欧美激情亚洲一区| 欧美精品一区二区视频| 免费亚洲一区| 久久综合九色综合久99| 久久综合色播五月| 狼人社综合社区| 女女同性精品视频| 欧美国产日本| 欧美精品福利视频| 欧美激情按摩| 欧美视频网站| 欧美日韩亚洲一区二区三区在线观看| 欧美看片网站| 久久久久久国产精品mv| 久久夜色精品| 欧美成人精品h版在线观看| 久久精品亚洲一区二区| 久久久人成影片一区二区三区 | 国产欧美日韩视频一区二区| 欧美三区在线观看| 国产精品久久| 国内精品久久久久久影视8 | 久久精品国产亚洲5555| 久久久www成人免费精品| 嫩草伊人久久精品少妇av杨幂| 女人色偷偷aa久久天堂| 欧美日韩裸体免费视频| 国产精品一区二区久久久| 国内欧美视频一区二区|