IDE:VS2017
SQL:MSSQL
SqlHelper其實就是把常跟資料庫存取的ADO.NET語法,封裝起來,以下是我使用的SqlHelper
這邊會有兩個靜態字串,cn的話,我是拿來抓取資料庫的名稱,帳號,密碼,CnStr則是多了連結哪一個DataBase
或許會覺得幹嘛這樣,或是不該這樣,這樣別人在與你對接程式的時候,就可以改這邊了...
不過目前不擔心,我是一個人~~~一個人.....而且,我工作的DB內的Table與Column都一樣的....只有裡面的Data會不一樣,所以需要可以自由的切換
這最主要有五個方法
ExecuteNonQuery---用來下新增/修改/刪除的事情 ,例如 DeleteTable
ExecuteRead--讀取某一個欄位某一列的文字 ,例如 Select Top 1 col From Table
ExecuteScalar--讀取數量,例如 Select Count(1) From Table
ExecuteDataTable--讀取某個表,例如 Select * From Table
ExecuteNonText--判斷有沒有成功連接上資料庫
public class SqlHelper
{
public static string cn = $"Data Source=.;Uid=sa;pwd=1234";
public static string cnStr = cn + ";database=DBNAME";
public static int ExecuteNonQuery(string sql, params SqlParameter[] Parameters)
{
using (SqlConnection cn = new SqlConnection(cnStr))
{
cn.Open();
using (SqlTransaction tran = cn.BeginTransaction())
{
using (SqlCommand cm = cn.CreateCommand())
{
cm.Transaction = tran;
cm.CommandTimeout = 0;
cm.CommandText = sql;
cm.Parameters.AddRange(Parameters);
try
{
tran.Commit();
}
catch
{
tran.Rollback();
}
return cm.ExecuteNonQuery();
}
}
}
}
public static string ExecuteRead(string sql, params SqlParameter[] Parameters)
{
using (SqlConnection cn = new SqlConnection(cnStr))
{
cn.Open();
using (SqlCommand cm = cn.CreateCommand())
{
string Read = "";
cm.CommandTimeout = 0;
cm.CommandText = sql;
cm.Parameters.AddRange(Parameters);
using (SqlDataReader dr = cm.ExecuteReader())
{
while (dr.Read())
{
Read = dr.GetSqlString(0).ToString();
}
};
return Read;
}
}
}
public static object ExecuteScalar(string sql, params SqlParameter[] Parameters)
{
using (SqlConnection cn = new SqlConnection(cnStr))
{
cn.Open();
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandTimeout = 0;
cm.CommandText = sql;
cm.Parameters.AddRange(Parameters);
return cm.ExecuteScalar();
}
}
}
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] Parameters)
{
using (SqlConnection cn = new SqlConnection(cnStr))
{
cn.Open();
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandTimeout = 0;
cm.CommandText = sql;
cm.Parameters.AddRange(Parameters);
using (SqlDataAdapter da = new SqlDataAdapter(cm))
{
DataTable dt = new DataTable();
da.FillSchema(dt, SchemaType.Source);
da.Fill(dt);
return dt;
}
}
}
}
public static bool ExecuteNonText(string _cnStr)
{
using (SqlConnection cn = new SqlConnection(_cnStr))
{
try
{
cn.Open();
return true;
}
catch
{
return false;
}
}
}
}
留言列表