using System;
//using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Collections.Specialized;
using System.Data.OleDb;
using SystemFramework;
//using SystemFramework;
namespace DataLinkMesWork
{
///
/// 数据访问类——提供通用的数据访问方法
///
public partial class SQLCommon
{
///
/// 执行标准SQL查询语句,返回记录集
///
/// 标准SQL查询语句
/// 连库字符串
/// 查询结果记录集
///
/// 错误信息
/// 布尔值,true表示该执行成功,false表示执行失败
public static bool ExecuteDataTable_OleDb_Insert(string sql, string connectionString, DataTable dt, ref OleDbParameter[] oleDbParameter, out string errorMessage)
{
bool result = false;
errorMessage = "";
try
{
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
using (OleDbDataAdapter dsCommand = new OleDbDataAdapter())
{
dsCommand.InsertCommand = new OleDbCommand(sql, conn);
for (int i = 0; i < oleDbParameter.Length; i++)
{
oleDbParameter[i].IsNullable = true;
dsCommand.InsertCommand.Parameters.Add(oleDbParameter[i]);
}
if (dt == null) return false;
dt.AcceptChanges();
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i].SetAdded();
}
dsCommand.Update(dt);
}
dt.AcceptChanges();
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteDataTable_OleDb\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\n连接字符串:\r\n" + connectionString);
}
return result;
}
///
/// 执行标准SQL查询语句,返回记录集
///
/// 标准SQL查询语句
/// 连库字符串
/// 查询结果记录集
/// 参数
/// 错误信息
/// 布尔值,true表示该执行成功,false表示执行失败
public static bool ExecuteDataTable_OleDb_Update(string sql, string connectionString, DataTable dt, ref OleDbParameter[] oleDbParameter, out string errorMessage)
{
bool result = false;
errorMessage = "";
//dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
using (OleDbDataAdapter dsCommand = new OleDbDataAdapter())
{
dsCommand.UpdateCommand = new OleDbCommand(sql, conn);
for (int i = 0; i < oleDbParameter.Length; i++)
{
dsCommand.UpdateCommand.Parameters.Add(oleDbParameter[i]);
}
if (dt == null) return false;
dt.AcceptChanges();
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i].SetModified();//.SetAdded();
}
dsCommand.Update(dt);
}
dt.AcceptChanges();
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteDataTable_OleDb\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
return result;
}
///
/// 用于 Excel Access
/// 执行标准SQL语句,不要求返回结果,适合(增、删、改)
///
/// 标准SQL语句
/// 连库字符串
/// 错误信息
/// 布尔值,true表示该执行成功,false表示执行失败
public static bool ExecuteNonQuery_OleDb(string sql, string connectionString, out string errorMessage)
{
bool result = false;
errorMessage = "";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
conn.Open();
cmd.ExecuteNonQuery();
}
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteNonQuery_OleDb\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn != null)
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
return result;
}
///
/// 用于 Excel Access
/// 执行标准SQL语句集合,不要求返回结果,适合(增、删、改)
///
///
///
///
///
public static bool ExecuteNonQuery_OleDb(StringCollection sql, string connectionString, out string errorMessage)
{
bool result = false;
errorMessage = "";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
for (int i = 0; i < sql.Count; i++)
{
using (OleDbCommand cmd = new OleDbCommand(sql[i].ToString(), conn))
{
cmd.ExecuteNonQuery();
}
}
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteNonQuery_OleDb\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
return result;
}
///
/// 用于 Excel Access
/// 执行标准SQL查询语句,返回记录集
///
/// 标准SQL查询语句
/// 连库字符串
/// 查询结果记录集
/// 错误信息
/// 布尔值,true表示该执行成功,false表示执行失败
public static bool ExecuteDataset_OleDb(string sql, string connectionString, out DataSet ds, out string errorMessage)
{
bool result = false;
errorMessage = "";
ds = new DataSet();
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
using (OleDbDataAdapter dsCommand = new OleDbDataAdapter())
{
dsCommand.SelectCommand = new OleDbCommand(sql, conn);
conn.Open();
dsCommand.Fill(ds);
}
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteDataset_OleDb(返回DataSet)\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
return result;
}
///
/// 执行标准SQL查询语句,返回记录集
///
/// 标准SQL查询语句
/// 连库字符串
/// 查询结果记录集
/// 错误信息
/// 布尔值,true表示该执行成功,false表示执行失败
public static bool ExecuteDataTable_OleDb(string sql, string connectionString, out DataTable dt, out string errorMessage)
{
bool result = false;
errorMessage = "";
dt = new DataTable("TableName");
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
using (OleDbDataAdapter dsCommand = new OleDbDataAdapter())
{
dsCommand.SelectCommand = new OleDbCommand(sql, conn);
dsCommand.Fill(dt);
}
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteDataTable_OleDb\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn != null)
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
return result;
}
///
/// 执行标准SQL查询语句,返回记录集
///
/// 标准SQL查询语句
/// 连库字符串
/// 查询结果记录集
/// 错误信息
/// 布尔值,true表示该执行成功,false表示执行失败
public static bool ExecuteDataTable_OleDb(string sql, string connectionString, out DataSet ds, out string errorMessage)
{
bool result = false;
errorMessage = "";
ds = new DataSet();
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
try
{
conn.Open();
using (OleDbDataAdapter dsCommand = new OleDbDataAdapter())
{
dsCommand.SelectCommand = new OleDbCommand(sql, conn);
dsCommand.Fill(ds);
}
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteDataTable_OleDb(返回DataSet)\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
return result;
}
///
/// 返回符合条件的记录行数
///
///
///
///
///
///
public static bool ExecuteOutNum_OleDb(string sql, string connectionString, out int count, out string errorMessage)
{
bool result = false;
errorMessage = "";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
count = 0;
try
{
conn.Open();
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
object obj = cmd.ExecuteScalar();
if (obj != null)
{
count = Convert.ToInt32(cmd.ExecuteScalar().ToString());
}
else
count = 0;
}
result = true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteOutNum\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
return result;
}
///
/// 增加记录,同时返回自动编号
///
///
///
///
///
public static bool ExecuteNonQuery_newID_OleDb(string sql, string connectionString, out long newID)
{
string errorMessage;
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
newID = 0;
try
{
conn.Open();
using (OleDbTransaction myTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted))
{
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
myTransaction.Commit();
cmd.ExecuteNonQuery();
cmd.CommandText = "select @@identity as id";
newID = Convert.ToInt64(cmd.ExecuteScalar());
}
}
return true;
}
catch (Exception e)
{
errorMessage = e.ToString();
ApplicationLog.WriteLog(e, "\r\nExecuteOutNum\r\nSQL语句:\r\n" + sql + "\r\n连接字符串:\r\n" + connectionString);
return false;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
}
}