C#操作SQL基本方法

數據庫訪問方法: 

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DAL
{
    public class SQLHelper
    {
        //static private string connString = ".;DataBase=yx;Uid=ssaa;Pwd=1111112";
        public static readonly string connString =ConfigurationManager.ConnectionStrings["connString"].ToString();
        /// <summary>
        /// 返回單一結果的查詢
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static object GetSingleResult(string sql)
        {
            SqlConnection DBConnection = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, DBConnection);
            try
            {
                DBConnection.Open();
                return cmd.ExecuteScalar();
            }
            catch (Exception ex)
            {
                //將程序異常寫入日誌

                throw ex;
            }
            finally
            {
                DBConnection.Close();
            }
        }
        /// <summary>
        /// 基於事務的數據上傳
        /// </summary>
        /// <param name="sqlList">sql集合</param>
        /// <returns></returns>
        public static bool UpdateByTran(List<string> sqlList)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            try
            {
                conn.Open();
                cmd.Transaction = conn.BeginTransaction();//開啓事務
                foreach (string itemSql in sqlList)
                {
                    cmd.CommandText = itemSql;
                    cmd.ExecuteNonQuery();//此處沒有提交
                }
                cmd.Transaction.Commit();//提交事務(真正保存到數據庫)
                return true;
            }
            catch (Exception ex)
            {
                if (cmd.Transaction != null)
                {
                    cmd.Transaction.Rollback();//回滾事務(自動刪除事務)
                }
                throw new Exception("調用事務方法出錯:" + ex.Message);
            }
            finally
            {
                if (cmd.Transaction != null)
                {
                    cmd.Transaction = null; //清除事務
                }
                conn.Close();//清除事務後再關閉,否則出錯
            }
        }



        /// <summary>
        /// 增刪改
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static int Update(string sql)
        {
            SqlConnection DBConnection = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, DBConnection);
            try
            {
                DBConnection.Open();
                return cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                DBConnection.Close();
            }
        }
        /// <summary>
        /// 返回結果集
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static SqlDataReader GetReader(string sql)
        {
            SqlConnection DBConnection = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, DBConnection);
            try
            {
                DBConnection.Open();
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);//保證從外面關掉
            }
            catch (Exception ex)
            {
                if (DBConnection.State == ConnectionState.Open)
                {
                    DBConnection.Close();
                }              
                throw ex;
            }
        }

        /// <summary>
        /// 執行查詢返回一個DataSet
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DataTable GetDataSet(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);//創建數據適配器對象
            DataTable ds = new DataTable();//創建一個內存數據集
            try
            {
                conn.Open();
                da.Fill(ds);//使用數據適配器填充數據集
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }

        }
        /// <summary>
        /// 獲取數據庫服務器的時間
        /// </summary>
        /// <returns></returns>
        public static DateTime GetServerTime()
        {
            try
            {
                return Convert.ToDateTime(GetSingleResult("select getdate()"));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            
        }

    }
}

通用數據訪問方法

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using Models;

namespace DAL
{
    public class BaliseTeleListCKService
    {
        #region 添加清單標記
        /// <summary>
        /// 添加清單標記
        /// </summary>
        /// <param name="btlCKData"></param>
        /// <returns></returns>
        public bool AddData(BaliseTeleListCK btlCKData)
        {
            string sql = "insert into tBaliseTeleListCK(BaliseTeleListLineName,BaliseTeleListAddTime,BaliseTeleListAddPerson,DiskNum) values('{0}','{1}','{2}','{3}')";

            sql = string.Format(sql, btlCKData.BaliseTeleListLineName, btlCKData.BaliseTeleListAddTime, btlCKData.BaliseTeleListAddPerson,btlCKData.DiskNum);
            try
            {
                int result = SQLHelper.Update(sql);
                if (result == 1)
                    return true;
                else
                    return false;
            }
            catch (Exception)
            {
                return false;
                //throw ex;
            }
        }
        #endregion

        #region 查詢清單標記
        /// <summary>
        /// 獲取所有清單標記(不排序)
        /// </summary>
        /// <returns></returns>
        public List<BaliseTeleListCK> GetAllMark()
        {
            string sql = "select * from tBaliseTeleListCK";

            SqlDataReader objReader = SQLHelper.GetReader(sql);
            List<BaliseTeleListCK> ck = new List<BaliseTeleListCK>();
            while (objReader.Read())
            {
                ck.Add(new BaliseTeleListCK()
                {
                    Mark = Convert.ToInt32(objReader["Mark"]),
                    BaliseTeleListLineName = objReader["BaliseTeleListLineName"].ToString(),
                    BaliseTeleListAddTime = objReader["BaliseTeleListAddTime"].ToString(),
                    BaliseTeleListAddPerson = objReader["BaliseTeleListAddPerson"].ToString(),
                    DiskNum = objReader["DiskNum"].ToString()
                });
            }
            objReader.Close();
            return ck;
        }
        /// <summary>
        /// 查詢所有清單標記(降序)
        /// </summary>
        /// <returns></returns>
        public List<BaliseTeleListCK> GetSortMark()
        {
            string sql = "select * from tBaliseTeleListCK order by Mark desc";
            SqlDataReader objReader = SQLHelper.GetReader(sql);
            List<BaliseTeleListCK> ck = new List<BaliseTeleListCK>();
            while (objReader.Read())
            {
                ck.Add(new BaliseTeleListCK()
                {
                    Mark = Convert.ToInt32(objReader["Mark"]),
                    BaliseTeleListLineName = objReader["BaliseTeleListLineName"].ToString(),
                    BaliseTeleListAddTime = objReader["BaliseTeleListAddTime"].ToString(),
                    BaliseTeleListAddPerson = objReader["BaliseTeleListAddPerson"].ToString(),
                    DiskNum = objReader["DiskNum"].ToString()
                });
            }
            objReader.Close();
            return ck;
        }
        /// <summary>
        /// 獲取指定標記的詳細信息
        /// </summary>
        /// <param name="mark"></param>
        /// <returns></returns>
        public BaliseTeleListCK GetMarkInfo(int mark)
        {
            string sql = "select Mark,BaliseTeleListLineName,BaliseTeleListAddTime,BaliseTeleListAddPerson from tBaliseTeleListCK where Mark={0}";
            sql = string.Format(sql,mark);
            SqlDataReader objReader = SQLHelper.GetReader(sql);
            BaliseTeleListCK ck = new BaliseTeleListCK();
            if (objReader.Read())
            {
                ck.Mark = Convert.ToInt32(objReader["Mark"]);
                ck.BaliseTeleListLineName = objReader["BaliseTeleListLineName"].ToString();
                ck.BaliseTeleListAddTime = objReader["BaliseTeleListAddTime"].ToString();
                ck.BaliseTeleListAddPerson = objReader["BaliseTeleListAddPerson"].ToString();
                ck.DiskNum = objReader["DiskNum"].ToString();
            }
            objReader.Close();
            return ck;
        }
        /// <summary>
        /// 根據時間獲取標記
        /// </summary>
        /// <param name="BaliseTeleListAddTime"></param>
        /// <returns></returns>
        public int GetMark(string BaliseTeleListAddTime)
        {
            string sql = "select Mark from tBaliseTeleListCK where BaliseTeleListAddTime='{0}'";
            sql = string.Format(sql, BaliseTeleListAddTime);
            SqlDataReader objReader = SQLHelper.GetReader(sql);
            int mark = 0;
            if (objReader.Read())
            {
                mark = Convert.ToInt32(objReader["Mark"]);
            }
            objReader.Close();
            return mark;
        }

        /// <summary>
        /// 根據時間獲取標記
        /// </summary>
        /// <param name="BaliseTeleListAddTime"></param>
        /// <returns></returns>
        public string GetLineName(string BaliseTeleListAddTime)
        {
            string sql = "select BaliseTeleListLineName from tBaliseTeleListCK where BaliseTeleListAddTime='{0}'";
            sql = string.Format(sql, BaliseTeleListAddTime);
            SqlDataReader objReader = SQLHelper.GetReader(sql);
            string lineName = "";
            if (objReader.Read())
            {
                lineName = objReader["BaliseTeleListLineName"].ToString();
            }
            objReader.Close();
            return lineName;
        }

        /// <summary>
        /// 獲取最新一條數據
        /// </summary>
        /// <returns></returns>
        public BaliseTeleListCK GetMaxMark()
        {
            string sql = "select * from tBaliseTeleListCK where Mark=(select max(Mark) from tBaliseTeleListCK)";
            //string str = "select * from tBaliseTeleListCK where Mark=(select max(Mark) from tBaliseTeleListCK);select @@identity";
            SqlDataReader objReader = SQLHelper.GetReader(sql);
            BaliseTeleListCK ck = new BaliseTeleListCK();
            if (objReader.Read())
            {
                ck.Mark = Convert.ToInt32(objReader["Mark"]);
                ck.BaliseTeleListLineName = objReader["BaliseTeleListLineName"].ToString();
                ck.BaliseTeleListAddTime = objReader["BaliseTeleListAddTime"].ToString();
                ck.BaliseTeleListAddPerson = objReader["BaliseTeleListAddPerson"].ToString();
                ck.DiskNum = objReader["DiskNum"].ToString();
            }
            objReader.Close();
            return ck;
        }
        #endregion

        #region 刪除清單標記
        public int DeleteMark(int mark)
        {
            string sql = "delete from tBaliseTeleListCK where Mark={0}";
            sql = string.Format(sql, mark);
            try
            {
                return SQLHelper.Update(sql);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region 更新標記
        public int Update(string BaliseTeleListLineName,string BaliseTeleListAddTime)
        {
            string sql = "update tBaliseTeleListCK set BaliseTeleListLineName='{0}' where BaliseTeleListAddTime='{1}'";
            sql = string.Format(sql, BaliseTeleListLineName, BaliseTeleListAddTime);

            try
            {
                return SQLHelper.Update(sql);
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region 提交多條數據
        public bool Import(List<BaliseTeleListCK> list)
        {
            //【1】編寫sql語句
            StringBuilder sqlBuilder = new StringBuilder("insert into tBaliseTeleListCK ");
            sqlBuilder.Append("(BaliseTeleListAddTime,BaliseTeleListAddPerson,DiskNum) ");
            sqlBuilder.Append("values('{0}','{1}',{2})");
            List<string> sqlList = new List<string>();
            //【2】解析對象
            foreach (BaliseTeleListCK item in list)
            {
                string sql = string.Format(sqlBuilder.ToString(),item.BaliseTeleListAddTime,item.BaliseTeleListAddPerson,item.DiskNum);
                //SQLHelper.Update(sql);
                //將解析對象添加到SQL語句集合
                sqlList.Add(sql);
            }
            //【3】將SQL語句集合提交到數據庫
            return SQLHelper.UpdateByTran(sqlList);
           
        }
        #endregion
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章