您的位置:首页 > 编程语言 > C#

Csharp连接Access数据库

2015-05-11 14:22 274 查看
/// <summary>
/// conn 的摘要说明。
/// </summary>
public class ConnDbForAcccess
{
/// <summary>
/// 连接数据库字符串
/// </summary>
private string connectionString;
/// <summary>
/// 存储数据库连接(保护类,只有由它派生的类才能访问)
/// </summary>
protected OleDbConnection Connection;
/// <summary>
/// 构造函数:带有参数的数据库连接
/// </summary>
/// <param name="newConnectionString"></param>
public ConnDbForAcccess(string newConnectionString)
{
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
connectionString += newConnectionString;
Connection = new OleDbConnection(connectionString);
}
/// <summary>
/// 获得连接字符串
/// </summary>
public string ConnectionString
{
get
{
return connectionString;
}
}
/// <summary>
/// 以列表的形式给出已经连接了的数据库中的所有表的表头
/// </summary>
/// <returns>数据库中表列表</returns>
public DataTable GetSchemaTable()
{
Connection.Open();
DataTable schemaTable;
try
{
schemaTable = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null,null,null,"TABLE"});
//schemaTable = Connection.GetSchema("Tables");
}
catch
{
schemaTable = null;
}
finally
{
Connection.Close();
}
return schemaTable;
}
/// <summary>
/// 以列表的形式给出数据库中某一张表中的数据列清单
/// </summary>
/// <returns>数据列清单列表</returns>
public DataTable GetSchemaColumn(string strTableName)
{
Connection.Open();
DataTable schemaColumn;
try
{
schemaColumn=Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] {null,null,strTableName,null});
}
catch
{
schemaColumn = null;
}
finally
{
Connection.Close();
}
return schemaColumn;
}
/// <summary>
/// 执行SQL语句返回结果到DataTable中
/// DataTable[1]  是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。它可以被应用在 VB 和 ASP 上。它无须代码
/// 就可以简单的绑定数据库。它具有微软风格的用户界面。
/// </summary>
/// <param name="strSQL"></param>
/// <returns>DataTable</returns>
public DataTable ReturnDataTable(string strSQL)
{
Connection.Open();
DataTable dataTable = new DataTable();
try
{
OleDbDataAdapter OleDbDA = new OleDbDataAdapter(strSQL, Connection);
OleDbDA.Fill(dataTable);
}
catch
{
dataTable = null;
}
finally
{
Connection.Close();
}
return dataTable;
}
/// <summary>
/// 通过DataTable的形式来更新数据库,这里需要输入更新的数据表表名和用于更新的dataTable
/// </summary>
/// <param name="strTableName">需要更新的数据表名</param>
/// <param name="dataTable">用来更新的新的DataTable</param>
/// <returns>更新成功就返回true,不成功就返回false</returns>
public Boolean UpdateByDataTable(string strTableName, DataTable dataTable)
{
Connection.Open();
try
{
OleDbDataAdapter OleDbDA = new OleDbDataAdapter();
string _tempSQL = "select * from ";
_tempSQL += strTableName;
OleDbDA.SelectCommand = new OleDbCommand(_tempSQL,Connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(OleDbDA);
OleDbDA.Update(dataTable);
return true;
}
catch
{
return false;
}
finally
{
Connection.Close();
}
}
/// <summary>
/// 执行SQL语句没有返回结果,如:执行删除、更新、插入等操作
/// </summary>
/// <param name="strSQL"></param>
/// <returns>操作成功标志</returns>
public bool ExeSQL(string strSQL)
{
bool resultState = false;
Connection.Open();
OleDbTransaction myTrans = Connection.BeginTransaction();
OleDbCommand command = new OleDbCommand(strSQL, Connection, myTrans);
try
{
command.ExecuteNonQuery();
myTrans.Commit();
resultState = true;
}
catch
{
myTrans.Rollback();
resultState = false;
}
finally
{
Connection.Close();
}
return resultState;
}
/// <summary>
/// 执行SQL语句(读取)返回结果到DataReader中
/// DataReader对象只允许以只读、顺向的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,同时DataReader对象还是一种非常节省资源的数据对象。
/// </summary>
/// <param name="strSQL"></param>
/// <returns>dataReader</returns>
public OleDbDataReader ReturnDataReader(string strSQL)
{
Connection.Open();
OleDbDataReader dataReader;
try
{
OleDbCommand command = new OleDbCommand(strSQL, Connection);
dataReader = command.ExecuteReader();
}
catch
{
dataReader = null;
}
finally
{
Connection.Close();
}
return dataReader;
}
/// <summary>
/// 执行SQL语句返回结果到DataSet中
/// DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数
/// 据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父
/// 子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。
/// </summary>
/// <param name="strSQL"></param>
/// <returns>DataSet</returns>
public DataSet ReturnDataSet(string strSQL)
{
Connection.Open();
DataSet dataSet = new DataSet();
try
{
OleDbDataAdapter OleDbDA = new OleDbDataAdapter(strSQL, Connection);
OleDbDA.Fill(dataSet);
}
catch
{
dataSet = null;
}
finally
{

8c0c
Connection.Close();
}
return dataSet;
}
/// <summary>
/// 执行一查询语句,同时返回查询结果数目
/// </summary>
/// <param name="strSQL"></param>
/// <returns>sqlResultCount</returns>
public int GetSqlResultCount(string strSQL)
{
int sqlResultCount = 0;
try
{
Connection.Open();
OleDbCommand command = new OleDbCommand(strSQL, Connection);
OleDbDataReader dataReader = command.ExecuteReader();
while (dataReader.Read())
{
sqlResultCount++;
}
dataReader.Close();
}
catch
{
sqlResultCount = 0;
}
finally
{
Connection.Close();
}
return sqlResultCount;
}
}


Csharp和Access连接的方法写成了一个类,相信会有很多大家可以共用的方法。放在这里分享一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Csharp access 数据库