using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Xml;
using D.Constant;
namespace D.Common
{
public static class DSQL
{
#region Methods方法
private static readonly object _lockObject = new object();
private static SqlConnection m_conn;
///
/// 定义数据库连接
///
/// 数据连接
public static SqlConnection Conn()
{
if (m_conn.IsNull())
{
lock (_lockObject)
{
if (m_conn.IsNull())
{
try
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(D.Constant.DConfig.NHI_CONFIG);
string conStr = xmlDoc.DocumentElement.GetElementsByTagName(DString.PROPERTY).Item(2).InnerText;
m_conn = new SqlConnection(conStr);
}
catch (Exception ex)
{
DLog.WriteLog(DMessage.ERR, ex);
}
}
}
}
return m_conn;
}
#endregion
#region Methods方法
///
/// 根据查询语句查询数据
///
/// 查询语句
/// 数据
public static DataSet ExecuteSelectSql(string sql)
{
SqlConnection con = Conn();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
try
{
sda.Fill(ds);
}
catch (Exception ex)
{
DLog.WriteLog(DMessage.ERR, ex);
}
finally
{
con.Close();
sda.Dispose();
}
return ds;
}
///
/// 根据指定条件提取数据
///
/// 表名
/// 要检索的字段
/// 检索的值
/// 值
public static DataTable ExecuteSelectSqlTable(string sql)
{
DataSet ds = ExecuteSelectSql(sql);
if (!ds.Tables.Count.Equals(0) && !ds.Tables[0].Rows.Count.Equals(0))
{
return ds.Tables[0];
}
return new DataTable();
}
///
/// 分页查询数据
///
/// 查询语句
/// 页数
/// 数量
/// 表名
/// 数据
public static SqlDataAdapter ExecuteSelectSqlPager(string sql)
{
SqlConnection con = Conn();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
con.Close();
return sda;
}
///
/// 根据SQL语句更新数据
///
/// SQL语句
/// 是否更新成功
public static bool ExcuteData(string sql)
{
int action = -1;
SqlConnection con = Conn();
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
action = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
DLog.WriteLog(DMessage.ERR, ex);
return false;
}
finally
{
con.Close();
cmd.Dispose();
}
return !action.Equals(-1);
}
///
/// 根据SQL语句更新多条数据
///
/// SQL语句
/// 是否更新成功
public static bool ExcuteDatas(List sqls)
{
int action = -1;
SqlConnection con = Conn();
SqlCommand cmd = new SqlCommand();
SqlTransaction tran = null;
try
{
con.Open();
tran = con.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Connection = con;
cmd.Transaction = tran;
foreach (string sql in sqls)
{
cmd.CommandText = sql;
action = cmd.ExecuteNonQuery();
if (action.Equals(-1))
{
tran.Rollback();
return false;
}
}
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
DLog.WriteLog(DMessage.ERR, ex);
return false;
}
finally
{
con.Close();
cmd.Dispose();
}
return true;
}
///
/// 删除指定表指定ID的数据
///
/// 表名
/// 字段名
/// 值
/// 是否删除成功
public static bool DeleteData(string table, string key, string value)
{
string sql = String.Format(DString.SQL_DELETE_DATA, table, key, value);
if (ExcuteData(sql))
{
return true;
}
return false;
}
///
/// 提取指定表指定字段的数据
///
/// 要查询的字段
/// 要查询的表
/// 要检索的字段
/// 检索的值
/// 值
public static string GetValue(string keyName, string tableName, string checkName, string checkValue)
{
string sql = String.Format(DString.SQL_GET_VALUE, keyName, tableName, checkName, checkValue);
DataSet ds = new DataSet();
ds = ExecuteSelectSql(sql);
if (ds.Tables[0].Rows.Count.Equals(0))
{
return String.Empty;
}
return ds.Tables[0].Rows[0][0].ToString();
}
///
/// 根据指定条件提取数据
///
/// 表名
/// 要检索的字段
/// 检索的值
/// 值
public static DataTable GetTable(string tableName, string checkName, string checkValue)
{
string sql = String.Format(DString.SQL_GET_TABLE, tableName, checkName, checkValue);
DataSet ds = new DataSet();
ds = ExecuteSelectSql(sql);
if (ds.Tables.Count.Equals(0) || ds.Tables[0].Rows.Count.Equals(0))
{
return new DataTable();
}
return ds.Tables[0];
}
///
/// 更新数据
///
/// 表名
/// 字段名
/// 值
/// ID
/// 是否更新成功
public static bool UpdateData(string Table, string KeyName, string Value, int Id)
{
string sql = String.Format(DString.SQL_UPDATE_DATA, Table, KeyName, Value, DateTime.Now, Id);
if (ExcuteData(sql))
{
return true;
}
else
{
return false;
}
}
#endregion
}
}