ASP.NET對SQLServer的通用數(shù)據(jù)庫訪問類
本文模仿實現(xiàn)數(shù)據(jù)庫訪問的通用類,代碼清晰,而且很實用,包括了對數(shù)據(jù)庫的所有的常用的操作。
/// <summary>
/// 數(shù)據(jù)庫訪問通用類
/// </summary>
public class SqlHelper
{
private string connectionString;
/// <summary>
/// 設定數(shù)據(jù)庫訪問字符串
/// </summary>
public string ConnectionString
{
set { connectionString = value; }
}
/// <summary>
/// 構造函數(shù)
/// </summary>
/// <param name="connectionString">數(shù)據(jù)庫訪問字符串</param>
public SqlHelper(string connectionString)
{
this.connectionString = connectionString;
}
/// <summary>
/// 執(zhí)行一個查詢,并返回查詢結果
/// </summary>
/// <param name="sql">要執(zhí)行的sql語句</param>
/// <param name="commandType">要執(zhí)行的查詢語句的類型,如存儲過程或者sql文本命令</param>
/// <returns>返回查詢結果集</returns>
public DataTable ExecuteDataTable(string sql,CommandType commandType)
{
return ExecuteDataTable(sql, commandType, null);
}
/// <summary>
/// 執(zhí)行一個查詢,并返回結果集
/// </summary>
/// <param name="sql">要執(zhí)行的sql文本命令</param>
/// <returns>返回查詢的結果集</returns>
public DataTable ExecuteDataTable(string sql)
{
return ExecuteDataTable(sql, CommandType.Text, null);
}
/// <summary>
/// 執(zhí)行一個查詢,并返回查詢結果
/// </summary>
/// <param name="sql">要執(zhí)行的sql語句</param>
/// <param name="commandtype">要執(zhí)行查詢語句的類型,如存儲過程或者sql文本命令</param>
/// <param name="parameters">Transact-SQL語句或者存儲過程參數(shù)數(shù)組</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
//如果同時傳入了參數(shù),則添加這些參數(shù)
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">要執(zhí)行的SQl查詢命令</param>
/// <returns></returns>
public SqlDataReader ExecuteReader(string sql)
{
return ExecuteReader(sql, CommandType.Text, null);
}
/// <summary>
///
/// </summary>
/// <param name="sql">要執(zhí)行的sql語句</param>
/// <param name="commandType">要執(zhí)行查詢語句的類型,如存儲過程或者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參數(shù)指示關閉reader對象時關閉與其關聯(lián)的Connection對象
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 執(zhí)行一個查詢,返回結果集的首行首列。忽略其他行,其他列
/// </summary>
/// <param name="sql">要執(zhí)行的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">參數(shù)類型</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>
/// 對數(shù)據(jù)庫進行增刪改的操作
/// </summary>
/// <param name="sql">要執(zhí)行的sql命令</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql)
{
return ExecuteNonQuery(sql, CommandType.Text, null);
}
/// <summary>
/// 數(shù)據(jù)庫進行增刪改的操作
/// </summary>
/// <param name="sql">對數(shù)據(jù)庫進行操作的sql命令</param>
/// <param name="commandType">要執(zhí)行查詢語句的類型,如存儲過程或者sql文本命令</param>
/// <returns></returns>
public int ExecuteNonQuery(string sql, CommandType commandType)
{
return ExecuteNonQuery(sql, commandType, null);
}
/// <summary>
/// 對數(shù)據(jù)庫進行增刪改的操作
/// </summary>
/// <param name="sql">要執(zhí)行的sql語句</param>
/// <param name="commandType">要執(zhí)行的查詢語句類型,如存儲過程或者sql文本命令</param>
/// <param name="parameters">Transact-SQL語句或者存儲過程的參數(shù)數(shù)組</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>
/// 返回當前連接的數(shù)據(jù)庫中所有用戶創(chuàng)建的數(shù)據(jù)庫
/// </summary>
/// <returns></returns>
public DataTable GetTables()
{
DataTable table = null;
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
table = con.GetSchema("Tables");
}
return table;
}
}
如果我們建立了一個對數(shù)據(jù)庫訪問的通用類以后,在隨數(shù)據(jù)庫進行操作的時候嗎,就只需要先實例化對象,然后根據(jù)自己的需要,調(diào)用相應的方法就可以完成對數(shù)據(jù)庫的所有操作。這就是數(shù)據(jù)庫訪問層和業(yè)務邏輯層分開的好處。
這樣書寫的代碼,可以大大的減少我們代碼的復雜度,而且,繁瑣度也大大的降低了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助。
- 一個ASP.NET的MYSQL的數(shù)據(jù)庫操作類自己封裝的
- asp.net Oracle數(shù)據(jù)庫訪問操作類
- asp.net下使用DbProviderFactories的數(shù)據(jù)庫操作類
- asp.net下Oracle,SQL Server,Access萬能數(shù)據(jù)庫通用類
- asp.net 數(shù)據(jù)庫連接類代碼(SQL)
- asp.net 數(shù)據(jù)庫的連接和datatable類
- ASP.NET封裝的SQL數(shù)據(jù)庫訪問類
- ASP.NET web.config中數(shù)據(jù)庫連接字符串connectionStrings節(jié)的配置方法
- asp.net連接查詢SQL數(shù)據(jù)庫并把結果顯示在網(wǎng)頁上(2種方法)
- ASP.NET 6種常用數(shù)據(jù)庫的連接方法
- ASP.NET2.0 SQL Server數(shù)據(jù)庫連接詳解
- Asp.net把圖片存入數(shù)據(jù)庫和讀取圖片的方法
- ASP.NET數(shù)據(jù)庫操作類實例
相關文章
uniapp+.net?core實現(xiàn)微信小程序獲取手機號功能
這篇文章主要介紹了uniapp+.net?core實現(xiàn)微信小程序獲取手機號功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
詳解.NET6下的Modbus通訊和數(shù)據(jù)庫記錄
本文主要介紹了.NET6下的Modbus通訊和數(shù)據(jù)庫記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04
asp.net自定義控件中注冊Javascript問題解決方案
這篇文章主要介紹了asp.net自定義控件中注冊Javascript的問題,需要的朋友可以參考下2014-05-05
詳解在Azure上部署Asp.NET Core Web App
這篇文章主要介紹了詳解在Azure上部署Asp.NET Core Web App,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
如何在ASP.NET Core中給上傳圖片功能添加水印實例代碼
這篇文章主要給大家介紹了關于如何在ASP.NET Core中給上傳圖片功能添加水印的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-02-02
在Framework4.0中實現(xiàn)延遲加載的實現(xiàn)方法
延遲加載,亦稱延遲實例化,延遲初始化等,主要表達的思想是,把對象的創(chuàng)建將會延遲到使用時創(chuàng)建,而不是在對象實例化時創(chuàng)建對象,即用時才加載。2011-08-08

