【.net基礎】--SQLHelper重構
一開始學習機房收費系統的時候,對資料庫助手類的抽象和封裝,理解的還不是很深刻。再次在牛腩新聞釋出系統中看到SQLHelper的重構,感覺對SQLHelper抽象過程印象深刻了許多。
下面簡單介紹一下ADO(ActiveX Data Object),首先通過Connection建立與伺服器的聯接,然後通過Command執行命令,最後通過Recordset物件來操作和檢視查詢結果。Parameters是Command物件的引數資訊,Filed通過Recordset使用,它提供了相應的欄位資訊。Error在Connection聯接的過程中,提供了錯誤資訊。
下面是SQLHelper的原始碼和一些我查詢後新增的註釋,希望能對大家有些幫助。
<span style="font-size:18px;">/*
* 建立人:王美
* 建立時間:2015年1月21日10:42:16
* 說明:資料庫的助手類
* 版本所有:王美
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;//System.Configuration 名稱空間包含提供用於處理配置資料的程式設計模型的型別。
//進行測試資料庫連線
using System.Data;//提供對ADO結構類的訪問
using System.Data.SqlClient;//名稱空間為 SQL伺服器.NET Framework 資料提供程式。
namespace DAL
{
public class SQLHelper
{
private SqlConnection conn = null;//聯接為空
private SqlCommand cmd = null;//命令為空
private SqlDataReader sdr = null;//表示用於填充 DataSet 和更新 SQL Server 資料庫的一組資料命令和一個資料庫連線。
//SQLHelper建構函式
public SQLHelper()
{
//提供對客戶端配置檔案應用程式的訪問
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString ;
conn = new SqlConnection(connStr);//例項化聯接
}
//sqlhelper資料庫開啟的聯接
private SqlConnection GetConn()
{
if (conn.State == ConnectionState.Closed)//如果當前資料來源的狀態是關閉
{
conn.Open();//開啟聯接
}
return conn;
}
/// <summary>
/// 執行不帶引數的增刪改SQL語句或儲存過程
/// </summary>
/// <param name="cmdText">增刪改SQL語句或儲存過程</param>
/// <param name="ct">命令型別</param>
/// <returns></returns>
public int ExecuteNonQuery(string cmdText, CommandType ct)
{
//定義資料庫定義字串
// 初始化SQlConnection的新例項,建立開啟資料庫的連線。
int res;
try
{
cmd = new SqlCommand(cmdText, GetConn());//例項化命令
cmd.CommandType = ct;//定義命令型別:儲存過程,文字,表
res = cmd.ExecuteNonQuery();//對聯接執行的T-SQL語句並返回受影響的行數
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)//如果聯接的狀態關閉了就將聯接開啟
{
conn.Close();
}
}
return res;
}
/// <summary>
/// 執行帶引數的增刪改SQL語句或儲存過程
/// </summary>
/// <param name="cmdText">增刪改SQL語句或儲存過程</param>
/// <param name="ct">命令型別</param>
/// <returns></returns>
public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)
{
int res;
using (cmd = new SqlCommand(cmdText, GetConn()))//例項化command,包含兩個引數sql語句,聯接
{
cmd.CommandType = ct;
cmd.Parameters.AddRange (paras);//給command新增引數陣列
res=cmd.ExecuteNonQuery();
}
return res;
}
/// <summary>
/// 執行帶引數的增刪改SQL語句或儲存過程
/// </summary>
/// <param name="cmdText">增刪改SQL語句或儲存過程 </param>
/// <param name="ct">命令型別</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText,CommandType ct)
{
DataTable dt = new DataTable();//例項化datatable
cmd = new SqlCommand(cmdText, GetConn());//例項化命令command
cmd.CommandType = ct;//傳入命令型別
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))//如果關閉關聯的datareader則關閉相應的聯接
{
dt.Load(sdr);//載入SQLDataReader
}
return dt;
}
/// <summary>
/// 執行帶引數的查詢SQL語句或儲存過程
/// </summary>
/// <param name="cmdText">查詢SQL語句或儲存過程</param>
/// <param name="paras">引數集合</param>
/// <param name="ct">命令型別</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
}
}
</span>
相關文章
- .NET中封裝SqlHelper封裝SQL
- [.net 物件導向程式設計基礎] (14) 重構物件程式設計
- webgl值得重視的基礎構建Web
- Netty的基礎架構模型Netty架構模型
- Kubernetes 架構及基礎概念架構
- SqlHelper:SQL
- 基礎程式碼重構的若干建議(一)
- OLEDB SqlHelperSQL
- SQLHelper 2.0SQL
- 物件導向基礎(1)--繼承 多型 重構物件繼承多型
- .NET重構(型別碼的設計、重構方法)型別
- .NET重構—單元測試的程式碼重構
- HTML 基礎重點(1)HTML
- 重學javascript基礎-typeofJavaScript
- SqlHelper和DBHelperSQL
- js 中基礎資料結構陣列去重問題JS資料結構陣列
- 重學C語言_資料結構與基礎語法C語言資料結構
- docker network基礎Docker
- 【重溫基礎】20.事件事件
- 【重溫基礎】8.字串字串
- 微軟原版SQLHelper類微軟SQL
- 【.net基礎】--.NET、winform、Asp.Net區別ORMASP.NET
- Elasticsearch基礎結構Elasticsearch
- MySQL基礎架構MySql架構
- Oracle基礎構架Oracle
- MySQL 基礎架構MySql架構
- 新華三:重構網路價值 構建數字經濟基礎設施
- Kubernetes API 基礎API
- .net core整合JWT(基礎)JWT
- 【.net基礎】--初識StructStruct
- 《大前端 基礎元件》系列 CSS基礎架構前端元件CSS架構
- 【重溫基礎】12.使用物件物件
- 【重溫基礎】instanceof運算子
- 【重溫基礎】4.函式函式
- Java重點基礎:反射機制Java反射
- 【重溫基礎】19.閉包
- 【重溫基礎】10.陣列陣列
- 【重溫基礎】6.數字