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连接的方法写成了一个类,相信会有很多大家可以共用的方法。放在这里分享一下。
相关文章推荐
- C#连接Access数据库
- 在Web.Config里面保存Access数据库的连接 (2)
- VC 在WIN7下使用ADO方式连接ACCESS数据库到XP不能运行
- VS连接Access数据库详解
- 设置access数据库DSN,jsp连接access数据库前提
- ASP.NET oledb连接Access数据库的方法
- Access数据库连接
- Jdbc-Odbc桥连接Access数据库出现问题
- VC连接ADO方式ACCESS数据库在WIN7下编译到XP下不能运行解决方法
- Java连接Access数据库
- java 连接 Access数据库的两种方法
- vc 连接access数据库(ado)
- ADO连接Access数据库
- Access数据库连接字符串
- jsp连接access数据库
- csharp tcp/ip连接发送消息
- 采用QTP11.0对access数据库的连接
- 在web.config里配制连接Access数据库字符串
- 连接Access数据库
- VS2005在使用membership的时候,如何连接Access数据库?