【ASP.NET開發】ASP.NET對SQLServer的通用資料庫訪問類
怎麼說呢,作為程式設計師,我們明天都應該學習新的知識。
以前我在對資料庫進行操作的時候都是在同一頁面對資料庫進行操作。這樣的話,就是操作繁瑣,而且需要重複的書寫對資料庫操作的程式碼,這樣不僅浪費了很多的時間,而且也使得程式碼看起來非常的凌亂。至從接觸到了三層架構的思想,明白了分層的好處,還有物件導向的好處。今天在看書的時候,看到周金橋老師的對資料庫訪問的通用類,就試著模仿的寫了一個,程式碼清晰,而且很實用,包括了對資料庫的所有的常用的操作。
/// <summary>
/// 資料庫訪問通用類
/// </summary>
public class SqlHelper
{
private string connectionString;
/// <summary>
/// 設定資料庫訪問字串
/// </summary>
public string ConnectionString
{
set { connectionString = value; }
}
/// <summary>
/// 建構函式
/// </summary>
/// <param name="connectionString">資料庫訪問字串</param>
public SqlHelper(string connectionString)
{
this.connectionString = connectionString;
}
/// <summary>
/// 執行一個查詢,並返回查詢結果
/// </summary>
/// <param name="sql">要執行的sql語句</param>
/// <param name="commandType">要執行的查詢語句的型別,如儲存過程或者sql文字命令</param>
/// <returns>返回查詢結果集</returns>
public DataTable ExecuteDataTable(string sql,CommandType commandType)
{
return ExecuteDataTable(sql, commandType, null);
}
/// <summary>
/// 執行一個查詢,並返回結果集
/// </summary>
/// <param name="sql">要執行的sql文字命令</param>
/// <returns>返回查詢的結果集</returns>
public DataTable ExecuteDataTable(string sql)
{
return ExecuteDataTable(sql, CommandType.Text, null);
}
/// <summary>
/// 執行一個查詢,並返回查詢結果
/// </summary>
/// <param name="sql">要執行的sql語句</param>
/// <param name="commandtype">要執行查詢語句的型別,如儲存過程或者sql文字命令</param>
/// <param name="parameters">Transact-SQL語句或者儲存過程引數陣列</param>
/// <returns></returns>
public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
{
DataTable data = new DataTable(); //例項化datatable,用於裝載查詢結果集
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.CommandType = commandtype;//設定command的commandType為指定的Commandtype
//如果同時傳入了引數,則新增這些引數
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
//通過包含查詢sql的sqlcommand例項來例項化sqldataadapter
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(data);//填充datatable
}
}
return data;
}
/// <summary>
/// 返回一個SqlDataReader物件的例項
/// </summary>
/// <param name="sql">要執行的SQl查詢命令</param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string sql)
{
return ExecuteReader(sql, CommandType.Text, null);
}
/// <summary>
///
/// </summary>
/// <param name="sql">要執行的sql語句</param>
/// <param name="commandType">要執行查詢語句的型別,如儲存過程或者SQl文字命令</param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string sql,CommandType commandType)
{
return ExecuteReader(sql, commandType, null);
}
/// <summary>
/// 返回一個sqldatareader物件的例項
/// </summary>
/// <param name="sql"></param>
/// <param name="commandType"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, con);
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameters);
}
}
con.Open();
//CommandBehavior.CloseConnection引數指示關閉reader物件時關閉與其關聯的Connection物件
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 執行一個查詢,返回結果集的首行首列。忽略其他行,其他列
/// </summary>
/// <param name="sql">要執行的SQl命令</param>
/// <returns></returns>
public Object ExecuteScalar(string sql)
{
return ExecuteScalar(sql, CommandType.Text, null);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="commandType"></param>
/// <returns></returns>
public Object ExecuteScalar(string sql, CommandType commandType)
{
return ExecuteScalar(sql, commandType, null);
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="commandType">引數型別</param>
/// <param name="parameters"></param>
/// <returns></returns>
public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters)
{
Object result=null;
SqlConnection con=new SqlConnection(connectionString);
SqlCommand cmd=new SqlCommand(sql,con);
cmd.CommandType= commandType;
if(parameters!=null)
{
foreach (SqlParameter parapmeter in parameters)
{
cmd.Parameters.Add(parapmeter);
}
}
con.Open();
result=cmd.ExecuteScalar();
con.Close();
return result;
}
/// <summary>
/// 對資料庫進行增刪改的操作
/// </summary>
/// <param name="sql">要執行的sql命令</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql)
{
return ExecuteNonQuery(sql, CommandType.Text, null);
}
/// <summary>
/// 資料庫進行增刪改的操作
/// </summary>
/// <param name="sql">對資料庫進行操作的sql命令</param>
/// <param name="commandType">要執行查詢語句的型別,如儲存過程或者sql文字命令</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, CommandType commandType)
{
return ExecuteNonQuery(sql, commandType, null);
}
/// <summary>
/// 對資料庫進行增刪改的操作
/// </summary>
/// <param name="sql">要執行的sql語句</param>
/// <param name="commandType">要執行的查詢語句型別,如儲存過程或者sql文字命令</param>
/// <param name="parameters">Transact-SQL語句或者儲存過程的引數陣列</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
{
int count = 0;
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = commandType;
if (parameters != null)
{
foreach(SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
con.Open();
count = cmd.ExecuteNonQuery();
con.Close();
return count;
}
/// <summary>
/// 返回當前連線的資料庫中所有使用者建立的資料庫
/// </summary>
/// <returns></returns>
public DataTable GetTables()
{
DataTable table = null;
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
table = con.GetSchema("Tables");
}
return table;
}
}
如果我們建立了一個對資料庫訪問的通用類以後,在隨資料庫進行操作的時候嗎,就只需要先例項化物件,然後根據自己的需要,呼叫相應的方法就可以完成對資料庫的所有操作。這就是資料庫訪問層和業務邏輯層分開的好處。
這樣書寫的程式碼,可以大大的減少我們程式碼的複雜度。而且,繁瑣度也大大的降低了。
相關文章
- Oracle,SqlServer,Access資料庫通用訪問類設計(轉)OracleSQLServer資料庫
- 【tronic】為ASP.NET封裝的SQL資料庫訪問類ASP.NET封裝SQL資料庫
- ASP.NET 2.0 中的資料訪問ASP.NET
- ASP.NET MongoDB資料庫操作類ASP.NETMongoDB資料庫
- 使用設計模式構建通用資料庫訪問類 (轉)設計模式資料庫
- Asp.net 資料庫快取依賴(SQLServer 2005)ASP.NET資料庫快取SQLServer
- SQLserver本地資料庫開發SQLServer資料庫
- Holer實現外網訪問SQLServer資料庫SQLServer資料庫
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- asp.net 利用NPOI匯出Excel通用類ASP.NETExcel
- 使用IsLine FrameWork開發ASP.NET程式之二—使用DataProvider 訪問資料 (上)FrameworkASP.NETIDE
- asp.net 利用微軟資料訪問類庫結合AjaxPro實現無重新整理下拉框級聯ASP.NET微軟
- 資料庫驅動的asp.net treeview資料庫ASP.NETView
- 【Rosion L.X】ASP.NET[C#]的ACCESS資料庫操作類ROSASP.NETC#資料庫
- asp.net查出 oracle資料庫中的中文亂碼問題ASP.NETOracle資料庫
- ASP.NET 訪問資料夾許可權不足,System.UnauthorizedAccessException拒絕訪問的處理方法ASP.NETZedException
- 基於gin的golang web開發:訪問mysql資料庫GolangWebMySql資料庫
- 求助:資料庫併發訪問問題資料庫
- [轉]SQLServer跨伺服器訪問資料庫(openrowset/opendatasource/openquery)SQLServer伺服器資料庫ENQ
- 資料庫訪問幾種方式對比資料庫
- 基於ASP.Net Core開發一套通用後臺框架記錄-(資料庫設計(許可權模組))ASP.NET框架資料庫
- 連線到 ASP.NET 資料庫ASP.NET資料庫
- 釋出一個.NET資料庫訪問類資料庫
- C# SQLite資料庫 訪問封裝類C#SQLite資料庫封裝
- Asp.net連線Access資料庫相對路徑寫法ASP.NET資料庫
- Sqlserver限制賬戶在哪些ip下才可以訪問資料庫SQLServer資料庫
- ASP.NET Core6.0-wwwroot資料夾無法訪問解決方法ASP.NET
- C#:資料庫SQL操作通用類C#資料庫SQL
- 寫一個通用資料訪問元件 (轉)元件
- ASP.NET MVC – SQL 資料庫簡介ASP.NETMVCSQL資料庫
- asp.net連線Access資料庫例子ASP.NET資料庫
- jboss訪問資料庫的問題資料庫
- 封裝ADO訪問資料庫的兩個類 (轉)封裝資料庫
- ASP.NET Core模組化前後端分離快速開發框架介紹之3、資料訪問模組介紹ASP.NET後端框架
- [開源] .Net ORM 訪問 Firebird 資料庫ORM資料庫
- JQuery對ASP.NET MVC資料進行操作jQueryASP.NETMVC
- JDBC資料庫訪問JDBC資料庫
- 資料庫訪問抽象類實現專案資料庫靈活切換資料庫抽象