數據庫操作代碼大封裝(不斷更新)

數據庫操作有很多繁瑣的細節,在這兒我把
它們封裝在一起,形成一個DBManager,再把它做成一個組件,今後用起來就特別方便了。歡迎指教。
 
//作者:v1.2.0.2
/創建/時間:2007.11.17
//作者:參天樹
using System;
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 static void Clear()
        {
            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();
           
        }
        //2.根據傳入的sql語句,執行並返回相關記錄的條數(一般是應用於用戶登陸的身份驗證)
        public static int ExecAndGetCount(string strSql)//strSql 是傳入的sql命令語句
        {
            //得到數據庫的連接,並且這個連接是打開的
            //建立一個命令對象
            cmd.Connection = GetCon();
            cmd.CommandText = strSql;
            string result = cmd.ExecuteScalar().ToString();//執行查詢,並返回結果的第一行的第一列
            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;
        }
        //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();
                }
                myTransation.Commit();
                flag = true;
            }
            catch (Exception e)
            {
                myTransation.Rollback();
                flag = false;
            }
            finally
            {
                Clear();
            }
            return flag;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章