出自ProgWiki
用途
程式碼
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Data.SqlClient;
// GetConnectionStrings 裡使用的 IEnumerator
using System.Collections;
//namespace MyDB
//{
/// <summary>
/// ClassSQL 為 System.Data.SqlClient 的操作類別
/// </summary>
public class ClassSQL
{
//private int m_nConnStrSel;
private string m_strConnection;
/// <summary>
/// ClassSQL() 建構函式
/// </summary>
public ClassSQL()
{
// TODO: ClassSQL()
//m_strConnection = ConfigurationManager.AppSettings["ConSQL"];
m_strConnection = ConfigurationManager.ConnectionStrings["ConSQL"].ConnectionString;
}
/*
/// <summary>
/// 取得連線用字串 (放進 m_strConnection 供 OpenConnection() 使用)
/// </summary>
/// <param name="strFilter">過濾條件</param>
/// <returns>使否取得連線用字串</returns>
public bool GetConnectionStrings(string strFilter)
{
// TODO: GetConnectionStrings(string strFilter)
// Get the connectionStrings.
ConnectionStringSettingsCollection connectionStrings =
ConfigurationManager.ConnectionStrings;
// Get the collection enumerator.
IEnumerator connectionStringsEnum = connectionStrings.GetEnumerator();
int i = 0;
bool IsConnStrSel = false;
while (connectionStringsEnum.MoveNext())
{
string strName = connectionStrings[i].Name;
if (m_nConnStrSel != i)
{
if (strFilter.Equals(""))
{
IsConnStrSel = true;
}
else if (strName.IndexOf(strFilter) != -1)
{
IsConnStrSel = true;
}
}
if (IsConnStrSel == true)
{
m_nConnStrSel = i;
m_strConnection = connectionStrings[strName].ToString();
return IsConnStrSel;
}
i += 1;
}
if (IsConnStrSel == false)
{
m_nConnStrSel = -1;
m_strConnection = "";
}
return IsConnStrSel;
}
*/
/// <summary>
/// 開啟SQL連線
/// </summary>
/// <returns>SqlConnection</returns>
public SqlConnection OpenConnection()
{
//TODO: OpenConnection()
SqlConnection objConn = new SqlConnection();
objConn.ConnectionString = m_strConnection;
objConn.Open();
return objConn;
}
/// <summary>
/// SqlCommand.ExecuteNonQuery 操作
/// </summary>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>int</returns>
public int ExecuteNonQuery(string strSQL)
{
//TODO: ExecuteNonQuery(string strSQL)
using (SqlConnection objConn = OpenConnection())
{
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteNonQuery(objConn, objCommand);
}
}
}
/// <summary>
/// SqlCommand.ExecuteNonQuery 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>int</returns>
public int ExecuteNonQuery(SqlConnection objConn, string strSQL)
{
//TODO: ExecuteNonQuery(SqlConnection objConn, string strSQL)
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteNonQuery(objConn, objCommand);
}
}
/// <summary>
/// SqlCommand.ExecuteNonQuery 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="objCommand">SqlCommand</param>
/// <returns>int</returns>
public int ExecuteNonQuery(SqlConnection objConn, SqlCommand objCommand)
{
//TODO: ExecuteNonQuery(SqlConnection objConn, SqlCommand objCommand)
objCommand.Connection = objConn;
int retval = objCommand.ExecuteNonQuery();
objCommand.Parameters.Clear();
return retval;
}
/// <summary>
/// SqlCommand.ExecuteReader 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>SqlDataReader</returns>
public SqlDataReader ExecuteReader(SqlConnection objConn, string strSQL)
{
//TODO: ExecuteReader(SqlConnection objConn, string strSQL)
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteReader( objConn, objCommand);
}
}
/// <summary>
/// SqlCommand.ExecuteReader 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="objCommand">SqlCommand</param>
/// <returns>SqlDataReader</returns>
public SqlDataReader ExecuteReader(SqlConnection objConn, SqlCommand objCommand)
{
//TODO: ExecuteReader(SqlConnection objConn, SqlCommand objCommand)
objCommand.Connection = objConn;
SqlDataReader objRet = objCommand.ExecuteReader();
objCommand.Parameters.Clear();
return objRet;
}
/// <summary>
/// SqlCommand.ExecuteScalar 操作
/// </summary>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>object</returns>
public object ExecuteScalar(string strSQL)
{
//TODO: ExecuteScalar(string strSQL)
using (SqlConnection objConn = OpenConnection())
{
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteScalar(objConn, objCommand);
}
}
}
/// <summary>
/// SqlCommand.ExecuteScalar 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>object</returns>
public object ExecuteScalar(SqlConnection objConn, string strSQL)
{
//TODO: ExecuteScalar(SqlConnection objConn, string strSQL)
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteScalar(objConn, objCommand);
}
}
/// <summary>
/// SqlCommand.ExecuteScalar 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="objCommand">SqlCommand</param>
/// <returns>object</returns>
public object ExecuteScalar(SqlConnection objConn, SqlCommand objCommand)
{
//TODO: ExecuteScalar(SqlConnection objConn, SqlCommand objCommand)
objCommand.Connection = objConn;
object obj = objCommand.ExecuteScalar();
objCommand.Parameters.Clear();
return obj;
}
/// <summary>
/// SqlCommand.ExecuteDataTable 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>DataTable</returns>
public DataTable ExecuteDataTable(SqlConnection objConn, string strSQL)
{
//TODO: ExecuteDataTable(SqlConnection objConn, string strSQL)
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteDataTable(objConn, objCommand);
}
}
/// <summary>
/// SqlCommand.ExecuteDataTable 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="objCommand">SqlCommand</param>
/// <returns>DataTable</returns>
public DataTable ExecuteDataTable(SqlConnection objConn, SqlCommand objCommand)
{
//TODO: ExecuteDataTable(SqlConnection objConn, SqlCommand objCommand)
DataTable ret = new DataTable();
using (SqlDataAdapter objDA = new SqlDataAdapter())
{
objCommand.Connection = objConn;
objDA.SelectCommand = objCommand;
objDA.Fill(ret);
objCommand.Parameters.Clear();
return ret;
}
}
/// <summary>
/// SqlCommand.ExecuteDataSet操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="strSQL">SQL命令字串</param>
/// <returns>DataSet</returns>
public DataSet ExecuteDataSet(SqlConnection objConn, string strSQL)
{
//TODO: ExecuteDataSet(SqlConnection objConn, string strSQL)
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteDataSet(objConn, objCommand);
}
}
/// <summary>
/// SqlCommand.ExecuteDataSet 操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="objCommand">SqlCommand</param>
/// <returns>DataSet</returns>
public DataSet ExecuteDataSet(SqlConnection objConn, SqlCommand objCommand)
{
//TODO: ExecuteDataSet(SqlConnection objConn, SqlCommand objCommand)
DataSet objDS = new DataSet();
using (SqlDataAdapter objDA = new SqlDataAdapter())
{
objCommand.Connection = objConn;
objDA.SelectCommand = objCommand;
objDA.Fill(objDS);
objCommand.Parameters.Clear();
return objDS;
}
}
/// <summary>
/// SqlCommand.ExecuteDataSet操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection<</param>
/// <param name="strSQL">SQL命令字串</param>
/// <param name="objDS">ref DataSet</param>
/// <param name="strTableName">資料表名稱</param>
/// <param name="bFillSchema">是否填入資料表的格式(true或false)</param>
/// <returns>int</returns>
public int ExecuteDataSet(SqlConnection objConn, string strSQL, ref DataSet objDS, string strTableName, bool bFillSchema)
{
//TODO: ExecuteDataSet(SqlConnection objConn, string strSQL, ref DataSet objDS, string strTableName, bool bFillSchema)
using (SqlCommand objCommand = new SqlCommand())
{
objCommand.CommandText = strSQL;
objCommand.CommandType = CommandType.Text;
return ExecuteDataSet(objConn, objCommand, ref objDS, strTableName, bFillSchema);
}
}
/// <summary>
/// SqlCommand.ExecuteDataSet操作
/// </summary>
/// <param name="objConn">已開啟連線的SqlConnection</param>
/// <param name="objCommand">SqlCommand</param>
/// <param name="objDS">ref DataSet</param>
/// <param name="strTableName">資料表名稱</param>
/// <param name="bFillSchema">是否填入資料表的格式(true或false)</param>
/// <returns>int</returns>
public int ExecuteDataSet(SqlConnection objConn, SqlCommand objCommand, ref DataSet objDS, string strTableName, bool bFillSchema)
{
//TODO: ExecuteDataSet(SqlConnection objConn, SqlCommand objCommand, ref DataSet objDS, string strTableName, bool bFillSchema)
int nRet = 0;
using (SqlDataAdapter objDA = new SqlDataAdapter())
{
objCommand.Connection = objConn;
objDA.SelectCommand = objCommand;
if (bFillSchema)
objDA.FillSchema(objDS, SchemaType.Source);
if ((strTableName != null) && (strTableName != ""))
nRet = objDA.Fill(objDS, strTableName);
else
nRet = objDA.Fill(objDS);
objCommand.Parameters.Clear();
return nRet;
}
}
}
//}
使用範例
string strSqlSelect = "SELECT count(*) as [Count] FROM [table_test]";
ClassSQL objSQL = new ClassSQL();
using (SqlConnection objConn = objSQL.OpenConnection())
{
using (DataSet objDS = objSQL.ExecuteDataSet(objConn, strSqlSelect))
{
int count = int.Parse(objDS.Tables[0].Rows[0]["Count"].ToString());
}
}