Lucas.Data数据库访问组件使用说明
Lucas.Data数据库访问组件提供了一组数据库访问的通用接口,目前支持OldDb,SQL Server,Oracle等数据库。
一、创建数据库连接及其配置:
DataAccess DAO = DataAccessFactory.CreateDataAccess(Config.DefaultDatabaseProperty);
这样一行代码就可以创建数据库访问连接。Config类是读取数据库配置的静态类,提供一个静态属性DefaultDatabaseProperty和一个静态方法GetDatabaseProperty(string name);DefaultDatabaseProperty属性于获取数据库默认配置,GetDatabaseProperty(string name)方法用于获取指定的数据库配置。在使用DataAccess之前,要求应用程序对数据库进行配置,其配置如下:
............
<configSections>
<section name="Lucas.Data" type="Lucas.Data.DataPropertyConfigurationHandler,Lucas.Data"/>
</configSections>
<Lucas.Data>
<DatabaseProperty name="Default">
<DatabaseType>MSSQLServer</DatabaseType> <ConnectionString>Server=(local);UID=sa;PWD=yourpassword;Database=Northwind;</ConnectionString>
</DatabaseProperty>
<DatabaseProperty name="BlogSys">
<DatabaseType>OleDb</DatabaseType>
<ConnectionString>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Blog.mdb;User ID=Admin;Password=;</ConnectionString>
</DatabaseProperty>
</Lucas.Data>
<appSettings>
<add key="DebugFile" value=""/>
</appSettings>
……..
说明:Config.DefaultDatabaseProperty属性的取值就是 名称为Default配置节的内容,在上配置中,可以看出数据库的类型为MS SQL Server,还有其连接字符串。如果你要获取名称为BloySys的数据库配置字节,则代码为:
DatabaseProperty dbp = Config.GetDatabaseProperty(“BlogSys”);
当然你也可以在代码中直接写,不需要配置,例如:
DatabaseProperyt dbp = new DatabaseProperty();
dbp.DatabaseType=DatabaseType.MSSQLServer;
dbp.ConnectionString=”你的数据库连接字符串”;
DataAccess dao = DataAccessFactory(dbp);
在编程的时候建议大家用配置,一是代码简洁,而且系统如果需要更换数据库只需要更改配置即可。
二、 数据库操作
DataAccess接口提供了一系列的属性和方法用于对数据库的操作。下面的这些属性和方法的列表:
bool IsClosed { get;}//判断数据是否关闭
/// <summary>
/// 打开数据库连接
/// </summary>
void Open();
/// <summary>
/// 关闭数据库连接
/// </summary>
void Close();
/// <summary>
/// 开启一个事务
/// </summary>
void BeginTransaction();
/// <summary>
/// 提交一个事务
/// </summary>
void Commit();
/// <summary>
/// 回滚一个事务
/// </summary>
void RollBack();
#endregion
#region ExecuteNonQuery//执行不返回结果集的命令
int ExecuteNonQuery(string commandText);
int ExecuteNonQuery(string commandText, CommandType commandType);
int ExecuteNonQuery(string commandText, QueryParameterCollection Parameters);
int ExecuteNonQuery(string commandText, CommandType commandType, QueryParameterCollection Parameters);
#endregion
#region ExecuteDataReader//返回DbDataReader
DbDataReader ExecuteDataReader(string commandText);
DbDataReader ExecuteDataReader(string commandText, CommandType commandType);
DbDataReader ExecuteDataReader(string commandText, QueryParameterCollection Parameters);
DbDataReader ExecuteDataReader(string commandText, CommandType commandType, QueryParameterCollection Parameters);
#endregion
#region ExecuteDataTable//返回DataTable
DataTable ExecuteDataTable(string commandText);
DataTable ExecuteDataTable(string commandText, CommandType commandType);
DataTable ExecuteDataTable(string commandText, QueryParameterCollection Parameters);
DataTable ExecuteDataTable(string commandText, CommandType commandType, QueryParameterCollection Parameters);
DataTable ExecuteDataTable(string commandText, CommandType commandType, QueryParameterCollection Parameters, string tableName);
DataTable ExecuteDataTable(string commandText, int startRecord, int maxRecords);
DataTable ExecuteDataTable(string commandText, CommandType commandType, int startRecord, int maxRecords);
DataTable ExecuteDataTable(string commandText, QueryParameterCollection Parameters, int startRecord, int maxRecords);
DataTable ExecuteDataTable(string commandText, CommandType commandType, QueryParameterCollection Parameters, int startRecord, int maxRecords);
DataTable ExecuteDataTable(string commandText, CommandType commandType, QueryParameterCollection Parameters, string tableName, int startRecord, int maxRecords);
#endregion
#region ExecuteScalar//执行返回第一行第一列
object ExecuteScalar(string commandText);
object ExecuteScalar(string commandText, CommandType commandType);
object ExecuteScalar(string commandText, QueryParameterCollection parameters);
object ExecuteScalar(string commandText, CommandType commandType, QueryParameterCollection parameters);
#endregion
注意,在执行ExecuteNonQuery, ExecuteDataReader, ExecuteScalar之前,一定要先打开数据库连接,否则会抛出异常,但ExecuteDatable不需要。