using
System;
using
System.Text;
using
System.Collections;
using
System.Collections.Specialized;
using
System.Data;
using
System.Data.OleDb;
using
System.Configuration;
namespace
HoverTree.Web.DBUtility
{
/// <summary>
/// 数据访问抽象基础类(ACCESS)
/// Copyright (C) 2006-2007 hovertree.net
/// All rights reserved
/// </summary>
public
abstract
class
DbHelperACE
{
public
static
string
connectionString = ConfigurationManager.AppSettings[
"AccessConnectionString"
];
public
DbHelperACE()
{
}
#region 公用方法
public
static
int
GetMaxID(
string
FieldName,
string
TableName)
{
string
strsql =
"select max("
+ FieldName +
")+1 from "
+ TableName;
object
obj = DbHelperACE.GetSingle(strsql);
if
(obj ==
null
)
{
return
1;
}
else
{
return
int
.Parse(obj.ToString());
}
}
public
static
bool
Exists(
string
strSql)
{
object
obj = DbHelperACE.GetSingle(strSql);
int
cmdresult;
if
((Object.Equals(obj,
null
)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult =
int
.Parse(obj.ToString());
}
if
(cmdresult == 0)
{
return
false
;
}
else
{
return
true
;
}
}
public
static
bool
Exists(
string
strSql,
params
OleDbParameter[] cmdParms)
{
object
obj = DbHelperACE.GetSingle(strSql, cmdParms);
int
cmdresult;
if
((Object.Equals(obj,
null
)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult =
int
.Parse(obj.ToString());
}
if
(cmdresult == 0)
{
return
false
;
}
else
{
return
true
;
}
}
#endregion
#region 执行简单SQL语句
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public
static
int
ExecuteSql(
string
SQLString)
{
using
(OleDbConnection connection =
new
OleDbConnection(connectionString))
{
using
(OleDbCommand cmd =
new
OleDbCommand(SQLString, connection))
{
try
{
connection.Open();
int
rows = cmd.ExecuteNonQuery();
return
rows;
}
catch
(System.Data.OleDb.OleDbException E)
{
connection.Close();
throw
new
Exception(E.Message);
}
}
}
}
/// <summary>
/// 执行SQL语句,设置命令的执行等待时间
/// </summary>
/// <param name="SQLString"></param>
/// <param name="Times"></param>
/// <returns></returns>
public
static
int
ExecuteSqlByTime(
string
SQLString,
int
Times)
{
using
(OleDbConnection connection =
new
OleDbConnection(connectionString))
{
using
(OleDbCommand cmd =
new
OleDbCommand(SQLString, connection))
{
try
{
connection.Open();
cmd.CommandTimeout = Times;
int
rows = cmd.ExecuteNonQuery();
return
rows;
}
catch
(System.Data.OleDb.OleDbException E)
{
connection.Close();
throw
new
Exception(E.Message);
}
}
}
}
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public
static
void
ExecuteSqlTran(ArrayList SQLStringList)
{
using
(OleDbConnection conn =
new
OleDbConnection(connectionString))
{
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);
}
}
}
/// <summary>
/// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
/// </summary>
/// <param name="strSQL">SQL语句</param>
/// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
/// <returns>影响的记录数</returns>
public
static
int
ExecuteSqlInsertImg(
string
strSQL,
byte
[] fs)
{
using
(OleDbConnection connection =
new
OleDbConnection(connectionString))
{
OleDbCommand cmd =
new
OleDbCommand(strSQL, connection);
System.Data.OleDb.OleDbParameter myParameter =
new
System.Data.OleDb.OleDbParameter(
"@fs"
, SqlDbType.Image);
myParameter.Value = fs;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int
rows = cmd.ExecuteNonQuery();
return
rows;
}
catch
(System.Data.OleDb.OleDbException E)
{
throw
new
Exception(E.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
/// <summary>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(object)</returns>
public
static
object
GetSingle(
string
SQLString)
{
using
(OleDbConnection connection =
new
OleDbConnection(connectionString))
{
using
(OleDbCommand cmd =
new
OleDbCommand(SQLString, connection))
{
try
{
connection.Open();
object
obj = cmd.ExecuteScalar();
if
((Object.Equals(obj,
null
)) || (Object.Equals(obj, System.DBNull.Value)))
{
return
null
;
}
else
{
return
obj;
}
}
catch
(System.Data.OleDb.OleDbException e)
{
connection.Close();
throw
new
Exception(e.Message);
}
}
}
}
/// <summary>
/// 执行查询语句,返回SqlDataReader(使用该方法切记要手工关闭SqlDataReader和连接)
/// </summary>
/// <param name="strSQL">查询语句</param>
/// <returns>SqlDataReader</returns>
public
static
OleDbDataReader ExecuteReader(
string
strSQL)
{
OleDbConnection connection =
new
OleDbConnection(connectionString);
OleDbCommand cmd =
new
OleDbCommand(strSQL, connection);
try
{
connection.Open();
OleDbDataReader myReader = cmd.ExecuteReader();
return
myReader;
}
catch
(System.Data.OleDb.OleDbException e)
{
throw
new
Exception(e.Message);
}
发表评论