激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - DAM 簡單跨數據庫ADO.NET組件

DAM 簡單跨數據庫ADO.NET組件

2019-09-11 10:49asp.net開發網 ASP.NET教程

這是一個可以實現簡單跨數據庫基于ADO.NET的組件。您可以在DAL層透過它來訪問數據庫。這是一個以前寫過一個小組件的修改版.

它的特點: 

在您保證SQL語句兼容的前提下,透過它來訪問數據庫時,在不需要改變DAL層一點代碼的前提下,只要修改一下配置文件,它便可以為你跨不同類型的數據庫。 
讓你的DAL層代碼更見簡練。它會根據配置文件配置的連接信息,自動為你創建數據庫連接,執行操作。關閉連接,釋放連接等. 
讓DAL層的不同模塊訪問不同類型或不同數據庫更加方便。 
不錯的執行效率,它基于原生ADO.NET。只會反射一次訪問不同數據庫的ADO提供者的程序集(DAM最終都是通過這些提供者來實現訪問不同類型數據庫的)。 
它的配置: 

復制代碼代碼如下:


<appsettings> 
<add key="rpsconnection" value="mssql"/> 
<add key="damconnection" value="sqlite" /> 
</appsettings> 
<connectionstrings> 
<add name="sqlite" connectionString="" providerName="System.Data.SQLite.SQLiteConnection;System.Data.SQLite"/> 
<add name="mssql" connectionString="" providerName="System.Data.SqlClient.SqlConnection;System.Data" /> 
</connectionstrings> 


appsettings 
1.添加一個KV。KEY="damconnection" VALUE="下面connectionstrings中的一個name的一項"."damconnection"為默認的DAM讀取的KEY, KEY的名字請不要更換. VALUE的值可以根據您默認連接的數據庫連接變而變. 
2.如果想應用多個數據庫連接,來訪問不同的數據庫. 您可以在appsettings中添加別的KV項.代碼里使用DAM中Config或者Factroy來創建不同的數據庫連接,可以實現訪問不同的或不同類型的數據庫. 
connectionstrings 
1.項中connectionString值不需要變 
2.項中providerName值分為三個部分 

連接的完整類名 ; 連接類所在的程序集名 
(命名空間+類名) (中間用";"分開) (注意不加.dll) 

測試代碼: 
DAL層測試代碼 

復制代碼代碼如下:


/// <summary> 
/// 數據訪問層 
/// 透過Dam訪問數據庫 
/// </summary> 
public class DALTest 

/// <summary> 
/// 最簡單的插入操作 
/// Execute會幫你自動創建所對應數據庫的連接、執行操作、釋放Command、關閉連接、釋放鏈接等 
/// </summary> 
/// <returns>執行后受影響行數</returns> 
public int Insert() 

return Execute.SExecuteNonQuery("sp_name", null); 
//return Execute.SExecuteNonQuery("insert into tablename (..) values (..)", CommandType.Text , null); 

/// <summary> 
/// 帶參數的插入操作 
/// Execute會幫你自動創建所對應數據庫的連接 
/// 并幫你把參數類型轉換為所對應數據庫類型的參數進行數據庫操作. 
/// </summary> 
/// <returns></returns> 
public int Insert_Paras() 

DbParameter[] paras = 

new MySqlParameter("p1","p1value") 
,new SqlParameter("p2","p2value") 
}; 
return Execute.SExecuteNonQuery("sp_name", paras); 

/// <summary> 
/// 帶參數的插入操作,并能得到參數返回值 
/// Execute會幫你自動創建所對應數據庫的連接 
/// 并幫你把參數類型轉換為所對應數據庫類型的參數進行數據庫操作. 
/// 執行完成您可得到返回值 
/// </summary> 
/// <returns></returns> 
public int Insert_Paras(ref string outputValue) 

int resultInt = 0; 
DbParameter[] paras = 

new MySqlParameter("p1","p1value") 
,new SqlParameter("p2_output","") 

Direction = ParameterDirection.Output 

}; 
resultInt = Execute.SExecuteNonQuery("sp_name", paras); 
if (paras[1].Value != null) outputValue = paras[1].Value.ToString(); 
return resultInt; 

/// <summary> 
/// 帶參數的插入操作,并能得到參數返回值,此參數從BLL層傳來 
///同上... 
/// </summary> 
/// <returns></returns> 
public int Insert_Paras(DbParameter[] paras) 

return Execute.SExecuteNonQuery("sp_name", paras); 
//這樣可以在BLL層通過 paras[1]來獲取返回參數了 

/// <summary> 
/// 執行同連接多操作的事務處理 
/// 這里使用1個帶參數的存儲過程和一個不帶參數的sql語句操作 
/// 使用是靜態調用方法 
/// </summary> 
/// <returns></returns> 
public bool Insert_Transaction() 

bool resultBool = false; 
DbParameter[] paras = 

new MySqlParameter("p1","p1value") 
,new SqlParameter("p2","p2value") 
}; 
DbConnection connection = null; 
DbTransaction transaction = null; 
try 

connection = Factory.CreateConnection(); 
connection.Open(); 
transaction = connection.BeginTransaction(); 
int resultInt1 = Execute.SExecuteNonQuery(connection, transaction, "sp_name1", paras); 
int resultInt2 = Execute.SExecuteNonQuery(connection, transaction, "insert into tablename (...) values (...)", null); 
if (resultInt1 > 0 && resultInt2 > 0) 

transaction.Commit(); 
resultBool = true; 

else 

transaction.Rollback(); 


catch (Exception) 

if (transaction != null) 

transaction.Rollback(); 


finally 

if (transaction != null) 

transaction.Dispose(); 

if (connection != null) 

//這里需要手動關閉連接!! 
connection.Close(); 
connection.Dispose(); 


return resultBool; 

/// <summary> 
/// 執行同連接多任務操作(不使用事務) 
/// 這里我們使用對象方法。這樣執行多任務操作可能會穩定點和效率高點 
/// </summary> 
/// <returns></returns> 
public void Insert_much() 

Execute exec = Execute.NewExecute; 
DbConnection connection = null; 
try 

connection = Factory.CreateConnection(); 
exec.ExecuteNonQuery(connection, null, "sp_name", null); 
exec.ExecuteNonQuery(connection, null, "sp_name2", null); 

finally 

if (connection != null) 

//因為調用了 帶事務的那個方法(但是我們設置事務為NULL,事務無效) 
//所以連接不會自動關閉釋放,我們需要手動釋放 
connection.Close(); 
connection.Dispose(); 




Dam: Dam.rar 
有興趣的可以看看:) 內部有幫助文檔。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片视频免费观看 | 九九福利视频 | 久久久国产精品网站 | 欧美亚洲啪啪 | 激情小说激情图片激情电影 | 中文字幕欧美视频 | 日本欧美一区二区三区视频麻豆 | 精品久久久久久综合日本 | 成人毛片网站 | 最新午夜综合福利视频 | 精品久久久久久久久久中出 | 欧美a黄| 成人黄色免费网站 | 日本网站一区 | 日本视频免费看 | 成人不卡免费视频 | 午夜精品福利影院 | 久久精品亚洲一区二区 | 一区二区三区在线观看免费视频 | 中文字幕www | 超碰97国产在线 | 欧美一级黄 | 国产一级小视频 | 久久久久国产成人免费精品免费 | 成人电影毛片 | 日本aaaa片毛片免费观看视频 | 伊人欧美 | 国产91丝袜在线熟 | 国产91在线高潮白浆在线观看 | 成人免费看片a | 亚洲啊v在线观看 | 国产一区日韩精品 | 天天色综合2 | 日韩中文字幕三区 | 日韩在线视频免费观看 | 韩国19禁在线| 国产精选久久久 | 成人不卡一区二区 | 亚洲 综合 欧美 动漫 丝袜图 | 九九热免费观看 | chinese xvideos gay|