using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
namespace ErpServer
{
public class AccessHelper
{
public AccessHelper()
{
}
///
/// 执行sql语句
///
///
public static int excuteSql(string connStr, string sqlstr)
{
using (OleDbConnection conn = new OleDbConnection(connStr))
{
try
{
conn.Open();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = sqlstr;
return comm.ExecuteNonQuery();
}
catch (Exception e)
{
return 0;
throw new Exception(connStr + "|" + e.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
public static void ExecuteSqlTran(string connStr, ArrayList SQLStringList)
{
using (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
OleDbTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (System.Data.OleDb.OleDbException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}
public static void ExecuteMultiQuery(string conn, List lst)
{
using (OleDbConnection inconn = new OleDbConnection(conn))
{
inconn.Open();
OleDbTransaction myTrans = inconn.BeginTransaction();
OleDbCommand incmd = inconn.CreateCommand();
incmd.Transaction = myTrans;
foreach (string sql in lst)
{
incmd.CommandText = sql;
incmd.ExecuteNonQuery();
}
myTrans.Commit();
}
}
public static object excuteScalar(string connStr, string sqlstr)
{
using (OleDbConnection conn = new OleDbConnection(connStr))
{
try
{
conn.Open();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = sqlstr;
object val = comm.ExecuteScalar();
return val;
}
catch (Exception e)
{
conn.Close();
conn.Dispose();
return null;
throw new Exception(connStr + "|" + e.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
///
/// 返回指定sql语句的OleDbDataReader对象,使用时请注意关闭这个对象。
///
///
///
public static OleDbDataReader dataReader(string connStr, string sqlstr)
{
OleDbDataReader dr = null;
using (OleDbConnection conn = new OleDbConnection(connStr))
{
try
{
conn.Open();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
comm.CommandText = sqlstr;
comm.CommandType = CommandType.Text;
dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
catch
{
dr.Close();
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
///
/// 返回指定sql语句的datatable
///
///
///
public static DataTable dataTable(string connStr, string sqlstr)
{
DataTable dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection(connStr))
{
try
{
conn.Open();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = sqlstr;
OleDbDataAdapter da = new OleDbDataAdapter(comm);
da.Fill(dt);
}
catch (Exception e)
{
conn.Close();
conn.Dispose();
return null;
throw new Exception(sqlstr + "|" + e.Message);
}
finally
{
conn.Close();
conn.Dispose();
}
return dt;
}
}
#region ExecuteDataset
public static DataSet ExecuteDataset(string connectionString, string commandText)
{
return ExecuteDataset(connectionString, commandText, (OleDbParameter[])null);
}
public static DataSet ExecuteDataset(string connectionString, string commandText, params OleDbParameter[] commandParameters)
{
if (null == connectionString && string.Empty == connectionString) throw new ArgumentNullException("connectionString");
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
return ExecuteDataset(connection, commandText, commandParameters);
}
}
public static DataSet ExecuteDataset(OleDbConnection connection, string commandText)
{
return ExecuteDataset(connection, commandText, (OleDbParameter[])null);
}
public static DataSet ExecuteDataset(OleDbConnection connection, string commandText, params OleDbParameter[] commandParameters)
{
if (null == connection) throw new ArgumentNullException("connection");
try
{
OleDbCommand cmd = new OleDbCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandText, commandParameters, out mustCloseConnection);
using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
if (mustCloseConnection)
connection.Close();
return ds;
}
}
catch
{
return null;
}
finally
{
if (connection != null)
{
connection.Close();
connection.Dispose();
}
}
}
public static DataSet ExecuteDataset(OleDbTransaction transaction, string commandText)
{
return ExecuteDataset(transaction, commandText, (OleDbParameter[])null);
}
public static DataSet ExecuteDataset(OleDbTransaction transaction, string commandText, params OleDbParameter[] commandParameters)
{
if (null == transaction) throw new ArgumentNullException("transaction");
if (null != transaction && null == transaction.Connection) throw new ArgumentException("transaction对象commited和rollbacked需要一个已打开的事务", "transaction");
OleDbCommand cmd = new OleDbCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, transaction.Connection, transaction, commandText, commandParameters, out mustCloseConnection);
using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
}
#endregion ExecuteDataset
private static void PrepareCommand(OleDbCommand command, OleDbConnection connection, OleDbTransaction transaction, string commandText, OleDbParameter[] commandParameters, out bool mustCloseConnection)
{
if (null == command) throw new ArgumentNullException("command");
if (null == commandText || string.Empty == commandText) throw new ArgumentNullException("commandText");
if (ConnectionState.Closed == connection.State)
{
connection.Open();
mustCloseConnection = true;
}
else
{
mustCloseConnection = false;
}
command.Connection = connection;
command.CommandText = commandText;
if (null != transaction)
{
if (null == transaction.Connection) throw new ArgumentException("transaction对象commited和rollbacked需要一个已打开的事务", "transaction");
command.Transaction = transaction;
}
command.CommandType = CommandType.Text;
if (null != commandParameters)
{
AttachParameters(command, commandParameters);
}
}
private static void AttachParameters(OleDbCommand command, OleDbParameter[] commandParameters)
{
if (null == command) throw new ArgumentNullException("command");
if (null != commandParameters)
{
foreach (OleDbParameter p in commandParameters)
{
if (null != p)
{
if ((ParameterDirection.Input == p.Direction || ParameterDirection.InputOutput == p.Direction) && (null == p.Value))
{
p.Value = DBNull.Value;
}
command.Parameters.Add(p);
}
}
}
}
}
}