连接Access数据库的DAL层操作代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ACS = System.Data.OleDb;
namespace DAL
{
public class DataAccess
{
//创建连接access数据库的字符串
private string AccessCennection = null;
#region 构造函数
/// <summary>
/// 构造函数创建连接字符串
/// </summary>
public DataAccess()
{
this.AccessCennection = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=C:\\Inetpub\\wwwroot\\biz\\App_Data\\ccc.mdb";//连接数据库字符串
}
#endregion
#region 创建连接数据库的连接
/// <summary>
/// 创建连接数据库的连接
/// </summary>
/// <param name="acs_connection">连接数据库的字符串</param>
/// <returns>返回实体连接</returns>
private ACS.OleDbConnection CreateACS_Connection(string acs_connection)
{
return new ACS.OleDbConnection(acs_connection);
}
#endregion
#region 创建操纵数据库的实体命令
/// <summary>
/// 创建操纵数据库的实体命令
/// </summary>
/// <param name="sql">数据库操纵语言</param>
/// <param name="acs_connection">数据库连接实体</param>
/// <returns>数据库命令实体</returns>
private ACS.OleDbCommand CreateACS_Command(string sql, ACS.OleDbConnection acs_connection)
{
return new ACS.OleDbCommand(sql, acs_connection);
}
#endregion
#region 创建填充数据用的数据适配器
/// <summary>
/// 创建填充数据用的数据适配器
/// </summary>
/// <param name="acs_command">数据库命令实体</param>
/// <returns>数据库适配器的实体</returns>
private ACS.OleDbDataAdapter CreateACS_Adapter(ACS.OleDbCommand acs_command)
{
return new ACS.OleDbDataAdapter(acs_command);
}
#endregion
#region 通过查询语句返回用户需要的结果
/// <summary>
/// 通过查询语句返回用户需要的结果
/// </summary>
/// <param name="sql">查询语句</param>
/// <returns>返回的结果集</returns>
public DataSet Select(string sql)
{
ACS.OleDbConnection acs_connection = null;
ACS.OleDbCommand acs_command;
ACS.OleDbDataAdapter acs_adapter;
DataSet ds = new DataSet();
try
{
acs_connection = CreateACS_Connection(this.AccessCennection);
acs_command = CreateACS_Command(sql, acs_connection);
acs_adapter = CreateACS_Adapter(acs_command);
acs_connection.Open();
acs_adapter.Fill(ds);
}
catch (Exception acse)
{
}
finally
{
acs_connection.Close();
}
return ds;
}
#endregion
#region 批处理执行SQL操作
/// <summary>
/// 批处理执行SQL操作
/// </summary>
/// <param name="SqlStrings">SQL语句泛型类</param>
/// <returns>是否成功</returns>
public Boolean ExecuteSQL(List<String> SqlStrings)
{
bool success = true;
int Rows = 0;
ACS.OleDbConnection acs_connection = null;
acs_connection = CreateACS_Connection(this.AccessCennection);
ACS.OleDbCommand acs_command = new System.Data.OleDb.OleDbCommand();
acs_connection.Open();
ACS.OleDbTransaction trans = acs_connection.BeginTransaction();
acs_command.Connection = acs_connection;
acs_command.Transaction = trans;
try
{
for (int i = 0; i < SqlStrings.Count; i++)
{
acs_command.CommandText = SqlStrings[i].ToString();
Rows += acs_command.ExecuteNonQuery();
}
trans.Commit();
}
catch
{
success = false;
trans.Rollback();
}
finally
{
acs_connection.Close();
}
if (Rows == 0)
success = false;
return success;
}
public Boolean ExecuteSQL(String SqlString)
{
List<String> SqlStrings = new List<String>();
SqlStrings.Add(SqlString);
return ExecuteSQL(SqlStrings);
}
#endregion
#region 在一个数据表中插入一条记录
/// <summary>
/// 在一个数据表中插入一条记录
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="Cols">哈希表,键值(Key)为字段名,值(value)为字段值</param>
/// <returns>是否成功</returns>
public bool Insert(String TableName, Hashtable Cols)
{
int Count = 0;//用于SQL语句创建
int Rows = 0;//记录受影响的行数
if (Cols.Count <= 0)
{
return true;
}
String Fields = "(";
String Values = " Values('";
foreach (DictionaryEntry item in Cols)
{
if (Count != 0)
{
Fields += ",";
Values += "','";
}
Fields += item.Key.ToString();
Values += item.Value.ToString();
Count++;
}
Fields += ")";
Values += "')";
String SqlString = "insert into " + TableName + Fields + Values;
return ExecuteSQL(SqlString);
}
#endregion
#region 更新一个数据表的一条记录
/// <summary>
/// 更新一个数据表的一条记录
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="Cols">哈希表,键值为字段名,值为字段值</param>
/// <param name="Where">Where字句</param>
/// <returns></returns>
public Boolean Update(String TableName, Hashtable Cols, String Where)
{
int Count = 0;
if (Cols.Count <= 0)
{
return true;
}
String Fields = " ";
foreach (DictionaryEntry item in Cols)
{
if (Count != 0)
{
Fields += ",";
}
Fields += item.Key.ToString();
Fields += "=";
Fields += item.Value.ToString();
}
Fields += " ";
String SqlString = "update " + TableName + " set " + Fields + Where;
return ExecuteSQL(SqlString);
}
#endregion
#region 获取数据返回一个Dataset
/// <summary>
/// 获取数据返回一个Dataset
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>DataSet</returns>
public DataSet GetDataSet(String SqlString)
{
ACS.OleDbConnection acs_connection = null;
ACS.OleDbCommand acs_command;
ACS.OleDbDataAdapter acs_adapter;
DataSet ds = new DataSet();
try
{
acs_connection = CreateACS_Connection(this.AccessCennection);
acs_command = CreateACS_Command(SqlString, acs_connection);
acs_adapter = CreateACS_Adapter(acs_command);
acs_connection.Open();
acs_adapter.Fill(ds);
}
catch (Exception acse)
{
}
finally
{
acs_connection.Close();
}
if (ds.Tables.Count == 0)
{
return null;
}
return ds;
}
#endregion
#region 根据用户所给的条件返回用户需要的数据
/// <summary>
/// 根据用户所给的条件返回用户需要的数据
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="ParameterTypes">参数类型</param>
/// <param name="ParameterValues">参数值</param>
/// <returns>DataSet</returns>
public DataSet Select(String TableName, List<String> ParameterTypes, List<String> ParameterValues)
{
StringBuilder sbSql = new StringBuilder("SELECT * FROM ");
sbSql.Append(TableName);
if (ParameterTypes[0] != null && ParameterValues[0] != null)
{
sbSql.Append(" WHERE ").Append(ParameterTypes[0]).Append(" ='").Append(ParameterValues[0]).Append("'");
//如果还有参数就继续加
for (int i = 1; i < ParameterTypes.Count; i++)
{
sbSql.Append(" and ").Append(ParameterTypes[i]).Append(" ='").Append(ParameterValues[i]).Append("'");
}
}
String SqlString = sbSql.ToString();
return GetDataSet(SqlString);
}
/// <summary>
/// 根据用户所给的条件返回用户需要的数据(单参数)
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="ParameterType">参数类型</param>
/// <param name="ParameterValue">参数值</param>
/// <returns>DataSet</returns>
public DataSet Select(String TableName, String ParameterType, String ParameterValue)
{
List<String> ParameterTypes = new List<String>();
List<String> ParameterValues = new List<String>();
ParameterTypes.Add(ParameterType);
ParameterValues.Add(ParameterValue);
return Select(TableName, ParameterTypes, ParameterValues);
}
#endregion
#region 获取数据,返回一个DataRow
/// <summary>
/// 获取数据,返回一个DataRow
/// </summary>
/// <param name="SqlString">Sql语句</param>
/// <returns>DataRow</returns>
public DataRow GetDataRow(String SqlString)
{
DataSet ds = GetDataSet(SqlString);
ds.CaseSensitive = false;
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0];
}
else
{
return null;
}
}
/// <summary>
/// 根据条件返回用户需要的数据
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="ParameterTypes">参数类型</param>
/// <param name="ParameterValues">参数值</param>
/// <returns>DataRow</returns>
public DataRow Select_DataRow(String TableName, List<String> ParameterTypes, List<String> ParameterValues)
{
DataSet ds = Select(TableName, ParameterTypes, ParameterValues);
ds.CaseSensitive = false;
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0];
}
else
{
return null;
}
}
else
{
return null;
}
}
/// <summary>
/// 根据用户给定的条件返回数据(单参数)
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="ParameterType">参数类型</param>
/// <param name="ParameterValue">参数值</param>
/// <returns>DataRow</returns>
public DataRow Select_DataRow(String TableName, String ParameterType, String ParameterValue)
{
List<String> ParameterTypes = new List<String>();
List<String> ParameterValues = new List<String>();
ParameterTypes.Add(ParameterType);
ParameterValues.Add(ParameterValue);
return Select_DataRow(TableName, ParameterTypes, ParameterValues);
}
#endregion
#region 从一个DataRow中,安全得到colname中的值,值为字符串类型
/// <summary>
/// 从一个DataRow中,安全得到colname中的值,值为字符串类型
/// </summary>
/// <param name="row">数据行对象</param>
/// <param name="colname">列名</param>
/// <returns>如果值存在,返回;否则,返回System.String.Empty</returns>
public static String ValidateDataRow_S(DataRow row, String colname)
{
if (row[colname] != DBNull.Value)
return row[colname].ToString();
else
return System.String.Empty;
}
#endregion
}
}