數據庫訪問方法:
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
}
}