數據訪問代碼是最底層的代碼,Linq也是基於基本的資料庫查詢的基礎上進行編寫,EF框架也是,所以瞭解底層代碼對我們開發有一個很客觀的幫助,如果哪天沒有網,沒有框架一樣可以進行開發數據訪問,接下來就介紹幾種方法。 第一個是數據閱讀器:簡單的瞭解一下什麼是數據閱讀器,通俗的說 數據閱讀器是 只讀 只取 ...
數據訪問代碼是最底層的代碼,Linq也是基於基本的資料庫查詢的基礎上進行編寫,EF框架也是,所以瞭解底層代碼對我們開發有一個很客觀的幫助,如果哪天沒有網,沒有框架一樣可以進行開發數據訪問,接下來就介紹幾種方法。
第一個是數據閱讀器:簡單的瞭解一下什麼是數據閱讀器,通俗的說 數據閱讀器是 只讀 只取 的一個操作,返回的結果如果讀到數據就返回true 如果沒有訪問到數據就返回 false,通過Read()的方法進行讀取。簡單介紹一下代碼
/// <summary>
/// 數據閱讀器
/// </summary>
/// <param name="constr">連接資料庫字元串</param>
/// <param name="cmdstr">操作資料庫命令</param>
/// <param name="type">命令字元類型</param>
/// <param name="ps">參數</param>
/// <returns>返回閱讀到的數據</returns>
public static SqlDataReader ExecuteReader(string constr, string cmdstr, CommandType type, params SqlParameter[] ps)
{
//通過方法里傳過來的 constr 資料庫連接字元串 連接對應的資料庫
SqlConnection conn = new SqlConnection(constr);
//做完連接下一步就是: 打開資料庫連接
conn.Open();
//資料庫操作命令兩個參數代表 cmdstr是commandstring的簡寫,意思就是操作資料庫命令字元串,
//conn就是我們的連接資料庫的操作,表示要連接哪個資料庫
SqlCommand cmd = new SqlCommand(cmdstr, conn);
//聲明一下操作資料庫的類型是什麼,這裡可是是Text 形式,也可以是 存儲過程 類型
cmd.CommandType = type;
//判斷一下有沒有參數,如果參數就給添加
if (ps.Length > 0)
{
cmd.Parameters.AddRange(ps);
}
//資料庫的操作狀態,因為DataReader是連接式訪問資料庫,所以必須全程打開資料庫連接
//連接狀態等查詢完成之後在關閉
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//返回查詢 dr 的結果
return dr;
}
還有一種斷開式訪問操作就是我們資料庫里的DataSet數據集 代碼如下:
/// <summary>
/// 數據集
/// </summary>
/// <param name="constr">連接資料庫字元串</param>
/// <param name="cmdstr">操作資料庫命令</param>
/// <param name="type">命令字元類型</param>
/// <param name="ps">參數</param>
/// <returns>臨時表集合</returns>
public static DataSet ExecuteDataSet(string constr, string cmdstr,CommandType type, params SqlParameter[] ps)
{
SqlConnection conn = new SqlConnection(constr);
//跟上面不同的就是這裡不是在是連接命名
//用數據適配器是適配 最後的作用就是填充數據集
SqlDataAdapter sda = new SqlDataAdapter(cmdstr, conn);
sda.SelectCommand.CommandType=type;
if (ps.Length > 0)
{
sda.SelectCommand.Parameters.AddRange(ps);
}
//前面的跟上面的註釋差不多所以就不一個個去寫了
//不一樣的就是返回類型 和 細節操作,
//創建一個空的數據集
DataSet ds = new DataSet();
//然後用數據適配器是填充一下數據集
sda.Fill(ds);
//最後返回 ds 數據集合
return ds;
}
聲明一下如果在cs文件中去寫數據訪問代碼需要加入命名空間 using System.Data 和 using System.Data..SqlClient;