牛腩新聞發布系統(B/S)中的SQLHelper,牛腩新聞發布系統
1.關於SQLHelper的基礎知識的說明,簡單介紹一下:
SqlHelper是一個基於.NET Framework的資料庫操作組件。組件中包含資料庫操作方法,SqlHelper有很多版本,主要以微軟一開始發布的SqlHelper類,後麵包含進了Enterprise Library開源包中了。還有一個主要版本是dbhelper.org開源的sqlhelper組件,優點是簡潔,高效能,不僅僅支援sqlserver,同時支援sqlserver、oracle、access、Mysql資料庫,也是一個開源項目,提供免費下載。
SqlHelper用於簡化你重複的去寫那些資料庫連接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封裝過後通常是只需要給方法傳入一些參數如資料庫連接字串,SQL參數等,就可以訪問資料庫了,很方便。
SqlHelper 類用於通過一組靜態方法來封裝資料訪問功能。該類不能被繼承或執行個體化,因此將其聲明為包含專用建構函式的不可繼承類。在 SqlHelper 類中實現的每種方法都提供了一組一致的重載。這提供了一種很好的使用 SqlHelper 類來執行命令的模式,同時為開發人員選擇訪問資料的方式提供了必要的靈活性。每種方法的重載都支援不同的方法參數,因此開發人員可以確定傳遞串連、事務和參數資訊的方式。
2.在這裡主要說一下關於再次學習SQLHelper的感受:
在這次的B/S牛腩新聞發布系統的學習過程中,相對於C/S的學習中使用到的SQLHelper,略微有些不同,但很大部分還是和C/S的樣子。其中關於SQLHelper的使用主要還是串連資料庫的助手,執行SQL語句或預存程序。資料庫助手的應用主要還是為了方便開發人員的開發和應用,減少代碼量,以到達提高效率的作用。
/* * 建立人:吳士龍 * 建立時間:2015-07-15 17:12 * 說明:資料庫助手類 * 著作權:個人 */using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{ public class SQLHelper { private SqlConnection conn = null; private SqlCommand cmd = null; private SqlDataReader sdr = null; public SQLHelper() { string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; conn = new SqlConnection(connStr); } 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) { int res; try { cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } 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())) { cmd.CommandType = ct; cmd.Parameters.AddRange(paras); 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(); cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } 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; } }}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。