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

異步的 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)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲嫩草精品久久| 国产欧美二区| 国产精品网站一区| 亚洲一区视频| 欧美午夜激情小视频| 久久久美女艺术照精彩视频福利播放 | 欧美亚洲日本网站| 久久精品国产第一区二区三区最新章节| 久久久久久久久久久久久女国产乱 | 欧美日韩视频不卡| 国产午夜精品美女毛片视频| 亚洲欧洲日本mm| 欧美国产先锋| 亚洲精品乱码久久久久久日本蜜臀 | 欧美午夜女人视频在线| 午夜精品电影| 久久国产精品亚洲va麻豆| 亚洲激情视频在线| 国产日韩欧美一区二区三区四区| 欧美国产亚洲视频| 亚洲精品小视频| 亚洲电影免费观看高清| 影音先锋久久久| 免费观看在线综合色| 最新国产成人av网站网址麻豆| 欧美精品成人| 在线免费观看成人网| 欧美日韩国产色视频| 亚洲嫩草精品久久| 国产一区二区三区久久久| 欧美电影免费| 欧美影院在线| 一区二区三区 在线观看视频| 国产美女精品视频| 欧美日韩一区二区三区| 久久久青草婷婷精品综合日韩 | 在线午夜精品自拍| 好吊一区二区三区| 国产精品嫩草影院一区二区| 欧美1区2区| 久久久久国产精品午夜一区| 亚洲香蕉在线观看| 一区二区三区 在线观看视频| 娇妻被交换粗又大又硬视频欧美| 国产精品国产亚洲精品看不卡15| 免播放器亚洲一区| 久久精彩免费视频| 亚洲一区在线播放| 日韩视频在线免费| 亚洲国产日韩一区| 国产一级久久| 国产一区久久| 国产夜色精品一区二区av| 国产精品日韩在线播放| 国产精品成人久久久久| 欧美日韩国产小视频| 免费精品99久久国产综合精品| 欧美制服丝袜第一页| 久久久999国产| 久久精品国产一区二区三区免费看| 亚洲欧美日韩高清| 午夜视频在线观看一区二区| 亚洲欧美激情四射在线日 | 欧美日韩一区二区在线播放| 欧美福利专区| 欧美精品一区二区三| 欧美成人日韩| 欧美一二三视频| 亚洲性视频网站| 亚洲午夜精品国产| 亚洲精品综合在线| 在线中文字幕日韩| 亚洲在线视频观看| 久久av红桃一区二区小说| 欧美午夜精品久久久久久超碰| 韩国久久久久| 欧美性大战久久久久| 欧美日韩日本视频| 欧美日韩一区自拍| 欧美三级韩国三级日本三斤| 欧美精品在线极品| 国产精品久久久久aaaa樱花| 国产日韩精品入口| 国产一区观看| 精品二区视频| 亚洲国产日本| 一本色道久久88综合日韩精品| 亚洲人成77777在线观看网| 韩日欧美一区| 亚洲福利免费| 亚洲福利在线视频| 亚洲视频每日更新| 久久精品一区二区国产| 亚洲欧洲av一区二区| 欧美在线观看www| 久久久人人人| 欧美性大战xxxxx久久久| 国产精品视频久久久| 国产在线不卡视频| 亚洲国产高清自拍| 亚洲一区二区三区视频播放| 亚洲欧美另类在线| 久久精品欧美日韩| 欧美国产日韩在线| 欧美日韩无遮挡| 激情久久综合| 日韩视频在线观看一区二区| 亚洲一级片在线观看| 欧美一区二区三区免费观看视频| 欧美大片一区二区| 国产精品九九| 亚洲精品日韩在线| 亚洲欧美在线视频观看| 欧美国产视频在线| 国产欧美日韩在线播放| 日韩一级精品视频在线观看| 亚洲欧美高清| 欧美日韩在线不卡一区| 国产欧美日韩综合| 亚洲天堂av在线免费| 久久久最新网址| 国产日韩精品视频一区| 有码中文亚洲精品| 欧美在线不卡视频| 欧美亚洲在线播放| 黄色成人精品网站| 国产精品日韩欧美一区二区三区| 欧美日韩久久| 国产精品国产三级国产aⅴ入口| 在线观看久久av| 在线一区二区视频| 欧美精品在线观看91| 国产欧美在线观看一区| 亚洲欧美日韩一区二区三区在线观看 | 欧美另类高清视频在线| 亚洲第一在线| 午夜一区不卡| 国产在线视频欧美| 中文无字幕一区二区三区| 欧美欧美在线| 狠狠狠色丁香婷婷综合久久五月| 欧美在线免费视频| 欧美视频一区二区三区…| 亚洲午夜成aⅴ人片| 欧美成人午夜激情在线| 亚洲欧洲一级| 久久久久久亚洲精品中文字幕| 狠狠色综合色区| 亚洲欧美韩国| 国产亚洲欧洲一区高清在线观看| 一区二区三区欧美成人| 国产精品青草久久久久福利99| 亚洲精选大片| 国产精品盗摄久久久| 一本色道久久88亚洲综合88| 欧美日本高清一区| 亚洲国产天堂久久综合| 欧美精品电影| 欧美国产精品v| 在线视频你懂得一区二区三区| 欧美午夜精品久久久| 欧美日韩在线观看一区二区三区| 亚洲成人直播| 欧美午夜精品久久久| 日韩亚洲综合在线| 国产精品永久入口久久久| 亚洲欧美一区二区在线观看| 国产午夜久久| 久久久.com| 亚洲国产欧美一区二区三区同亚洲 | 国产精品成人午夜| 在线视频你懂得一区| 欧美日韩一区在线观看视频| 亚洲视频大全| 国产欧美二区| 国产乱子伦一区二区三区国色天香| 亚洲性av在线| 亚洲国产一区二区三区在线播 | 欧美成人在线网站| 亚洲午夜免费视频| 国产麻豆日韩| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲人成7777| 午夜久久久久| 欧美一区二区三区视频| 久久成人18免费观看| 欧美日韩在线精品| 欧美成人精品一区二区| 国产欧美日韩一区| 亚洲自拍偷拍麻豆| 国产精品va在线播放我和闺蜜| 国产视频久久久久久久| 亚洲午夜极品| 亚洲国产精品v| 国产一区二区三区久久| 亚洲欧美日本另类| 激情亚洲网站| 欧美日本一区| 欧美一区二区三区免费观看视频| 欧美午夜精品久久久久久浪潮|