數據庫操作有很多繁瑣的細節,在這兒我把
它們封裝在一起,形成一個DBManager,再把它做成一個組件,今後用起來就特別方便了。歡迎指教。
//作者:v1.2.0.2
/創建/時間:2007.11.17
//作者:參天樹
/創建/時間:2007.11.17
//作者:參天樹
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace DB
{
public class DBManager
{
private static SqlConnection con = null;
private static SqlCommand cmd = new SqlCommand();
//打開並返回一個連接
public static SqlConnection GetCon()
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["conStr"].ConnectionString);
con.Open();
return con;
}
{
public class DBManager
{
private static SqlConnection con = null;
private static SqlCommand cmd = new SqlCommand();
//打開並返回一個連接
public static SqlConnection GetCon()
{
con = new SqlConnection(ConfigurationManager.ConnectionStrings["conStr"].ConnectionString);
con.Open();
return con;
}
public static void Clear()
{
if (con.State == ConnectionState.Open)
con.Close();
}
{
if (con.State == ConnectionState.Open)
con.Close();
}
//1.執行sql語句,不返回結果(可用於添加,刪除操作,)
public static void Exec(string strSql)
{
cmd.Connection = GetCon();
cmd.CommandText = strSql;
int count = cmd.ExecuteNonQuery();
Clear();
}
public static void Exec(string strSql)
{
cmd.Connection = GetCon();
cmd.CommandText = strSql;
int count = cmd.ExecuteNonQuery();
Clear();
}
//2.根據傳入的sql語句,執行並返回相關記錄的條數(一般是應用於用戶登陸的身份驗證)
public static int ExecAndGetCount(string strSql)//strSql 是傳入的sql命令語句
{
//得到數據庫的連接,並且這個連接是打開的
public static int ExecAndGetCount(string strSql)//strSql 是傳入的sql命令語句
{
//得到數據庫的連接,並且這個連接是打開的
//建立一個命令對象
cmd.Connection = GetCon();
cmd.CommandText = strSql;
cmd.Connection = GetCon();
cmd.CommandText = strSql;
string result = cmd.ExecuteScalar().ToString();//執行查詢,並返回結果的第一行的第一列
int count = Convert.ToInt32(result);
Clear();
int count = Convert.ToInt32(result);
Clear();
return count;
}
}
//3.根據傳入的sql語句,執行並返回DataReader對象
public static SqlDataReader ExecAndGetSdr(string strSql)
{
cmd.Connection = GetCon();
cmd.CommandText = strSql;
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
public static SqlDataReader ExecAndGetSdr(string strSql)
{
cmd.Connection = GetCon();
cmd.CommandText = strSql;
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
//4.根據傳入的sql語句,執行並返回DataReader對象
public static DataSet ExecAndGetDs(string strSql, string tableName)
{
SqlDataAdapter sda = new SqlDataAdapter(strSql, GetCon());
DataSet ds = new DataSet();
sda.Fill(ds, tableName);
Clear();
return ds;
}
//5.定義一個應用事務機制批量處理多條sql語句的方法
public static bool ExecInTransation(string[] strSql)
{
bool flag = false;
con = GetCon();
cmd.Connection = con;
SqlTransaction myTransation;
myTransation = con.BeginTransaction();
try
{
for (int i = 0; i < strSql.Length; i++)
{
cmd.Transaction = myTransation;
cmd.CommandText = strSql[i];
cmd.ExecuteNonQuery();
}
public static DataSet ExecAndGetDs(string strSql, string tableName)
{
SqlDataAdapter sda = new SqlDataAdapter(strSql, GetCon());
DataSet ds = new DataSet();
sda.Fill(ds, tableName);
Clear();
return ds;
}
//5.定義一個應用事務機制批量處理多條sql語句的方法
public static bool ExecInTransation(string[] strSql)
{
bool flag = false;
con = GetCon();
cmd.Connection = con;
SqlTransaction myTransation;
myTransation = con.BeginTransaction();
try
{
for (int i = 0; i < strSql.Length; i++)
{
cmd.Transaction = myTransation;
cmd.CommandText = strSql[i];
cmd.ExecuteNonQuery();
}
myTransation.Commit();
flag = true;
}
catch (Exception e)
{
myTransation.Rollback();
flag = false;
}
finally
{
Clear();
}
flag = true;
}
catch (Exception e)
{
myTransation.Rollback();
flag = false;
}
finally
{
Clear();
}
return flag;
}
}
}
}