使用微软企业库EnterpriseLibary访问SQLite数据库
2012-01-03 21:27
357 查看
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎,SQLite用的非常广泛,支持通用的SQL92标准,支持事务操作,支持最大可达2T的数据库,在小型数据库使用性能上由于微软的Access数据库等等特点。
由于默认的微软企业库EnterpriseLibary不支持SQLite的数据库访问,因此需要在企业库EnterpriseLibary中访问这种数据库的话,需要使用一个企业库的扩展类库,该类库可以http://entlibcontrib.codeplex.com/ 上下载,结合一起使用,非常方便,很好的利用了微软企业库的优势和特点。
默认如果没有采用微软企业库EnterpriseLibary 的话,紧紧使用SQLite的对象来操作数据库,是这样的
/// <summary>
/// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>
/// 返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </returns>
public string SqlValueList2(string sql)
{
SQLiteConnection connection = new SQLiteConnection(connectionString);
SQLiteCommand cmd = new SQLiteCommand(sql, connection);
connection.Open();
StringBuilder result = new StringBuilder();
using (SQLiteDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.AppendFormat("{0},", dr[0].ToString());
}
}
string strResult = result.ToString().Trim(',');
return strResult;
}
/// <summary>
/// 执行SQL查询语句,返回所有记录的DataTable集合。
/// </summary>
/// <param name="sql">SQL查询语句</param>
/// <returns></returns>
public DataTable SqlTable2(string sql)
{
DataSet ds = new DataSet();
SQLiteDataAdapter adpater = new SQLiteDataAdapter(sql, connectionString);
adpater.Fill(ds);
return ds.Tables[0];
} 如果使用上面的做法,只需要指定连接字符串ConnectionString即可,一般可以这样指定其数据库连接字符串。
connectionString = string.Format(@"Data Source={0}\OrderWater.db;Version=3;", Application.StartupPath);
如果是使用微软的企业库EnterpriseLibary来进行数据库访问的话,那么需要在配置文件中配置数据库访问,如下所示。
注意红色框部分就可以顺利配置好Sqlite数据库的企业库配置信息了。
然后我们在代码中访问使用Sqlite数据库的时候,就非常透明了。
/// <summary>
/// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>
/// 返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </returns>
public string SqlValueList(string sql)
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(sql);
StringBuilder result = new StringBuilder();
using (IDataReader dr = db.ExecuteReader(cmd))
{
result.AppendFormat("{0},", dr[0].ToString());
}
string strResult = result.ToString().Trim(',');
return strResult;
}
/// <summary>
/// 执行SQL查询语句,返回所有记录的DataTable集合。
/// </summary>
/// <param name="sql">SQL查询语句</param>
/// <returns></returns>
public DataTable SqlTable(string sql)
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(sql);
return db.ExecuteDataSet(cmd).Tables[0]; }
如果结合我的分页控件使用,那么分页控件的查询数据的使用代码如下所示:
/// <summary>
/// 标准的记录查询函数
/// </summary>
/// <param name="where"></param>
/// <param name="pagerInfo"></param>
/// <returns></returns>
private DataTable FindToDataTable(string where, PagerInfo pagerInfo)
{
WHC.Pager.WinControl.PagerHelper helper = new WHC.Pager.WinControl.PagerHelper("All_Customer", "*", "LastUpdated", pagerInfo.PageSize, pagerInfo.CurrenetPageIndex, true, where);
string countSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, true);
string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, false);
string value = SqlValueList(countSql);
pagerInfo.RecordCount = Convert.ToInt32(value);//为了显示具体的信息,需要设置总记录数
DataTable dt = SqlTable(dataSql);
return dt; }
效果如下所示:
DevExpress样式版本的分页控件效果如下所示(均支持SQLite分页)
由于Sqlite的开发,在日常的项目中,还是比较常见的,因此,为了方便,我把Sqlite的数据访问也集成到我的Winform框架系统中了,这样通过扩展,支持更多的数据库,项目视图如下所示。
如果你有Sqlite的项目开发,使用这个做好的框架,应该是能事半功倍的。
最后,希望和大家一起共同研究技术,探讨代码。。。
由于默认的微软企业库EnterpriseLibary不支持SQLite的数据库访问,因此需要在企业库EnterpriseLibary中访问这种数据库的话,需要使用一个企业库的扩展类库,该类库可以http://entlibcontrib.codeplex.com/ 上下载,结合一起使用,非常方便,很好的利用了微软企业库的优势和特点。
默认如果没有采用微软企业库EnterpriseLibary 的话,紧紧使用SQLite的对象来操作数据库,是这样的
/// <summary>
/// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>
/// 返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </returns>
public string SqlValueList2(string sql)
{
SQLiteConnection connection = new SQLiteConnection(connectionString);
SQLiteCommand cmd = new SQLiteCommand(sql, connection);
connection.Open();
StringBuilder result = new StringBuilder();
using (SQLiteDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
result.AppendFormat("{0},", dr[0].ToString());
}
}
string strResult = result.ToString().Trim(',');
return strResult;
}
/// <summary>
/// 执行SQL查询语句,返回所有记录的DataTable集合。
/// </summary>
/// <param name="sql">SQL查询语句</param>
/// <returns></returns>
public DataTable SqlTable2(string sql)
{
DataSet ds = new DataSet();
SQLiteDataAdapter adpater = new SQLiteDataAdapter(sql, connectionString);
adpater.Fill(ds);
return ds.Tables[0];
} 如果使用上面的做法,只需要指定连接字符串ConnectionString即可,一般可以这样指定其数据库连接字符串。
connectionString = string.Format(@"Data Source={0}\OrderWater.db;Version=3;", Application.StartupPath);
如果是使用微软的企业库EnterpriseLibary来进行数据库访问的话,那么需要在配置文件中配置数据库访问,如下所示。
注意红色框部分就可以顺利配置好Sqlite数据库的企业库配置信息了。
然后我们在代码中访问使用Sqlite数据库的时候,就非常透明了。
/// <summary>
/// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>
/// 返回查询结果的所有记录的第一个字段,用逗号分隔。
/// </returns>
public string SqlValueList(string sql)
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(sql);
StringBuilder result = new StringBuilder();
using (IDataReader dr = db.ExecuteReader(cmd))
{
result.AppendFormat("{0},", dr[0].ToString());
}
string strResult = result.ToString().Trim(',');
return strResult;
}
/// <summary>
/// 执行SQL查询语句,返回所有记录的DataTable集合。
/// </summary>
/// <param name="sql">SQL查询语句</param>
/// <returns></returns>
public DataTable SqlTable(string sql)
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(sql);
return db.ExecuteDataSet(cmd).Tables[0]; }
如果结合我的分页控件使用,那么分页控件的查询数据的使用代码如下所示:
/// <summary>
/// 标准的记录查询函数
/// </summary>
/// <param name="where"></param>
/// <param name="pagerInfo"></param>
/// <returns></returns>
private DataTable FindToDataTable(string where, PagerInfo pagerInfo)
{
WHC.Pager.WinControl.PagerHelper helper = new WHC.Pager.WinControl.PagerHelper("All_Customer", "*", "LastUpdated", pagerInfo.PageSize, pagerInfo.CurrenetPageIndex, true, where);
string countSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, true);
string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.DatabaseType.SQLite, false);
string value = SqlValueList(countSql);
pagerInfo.RecordCount = Convert.ToInt32(value);//为了显示具体的信息,需要设置总记录数
DataTable dt = SqlTable(dataSql);
return dt; }
效果如下所示:
DevExpress样式版本的分页控件效果如下所示(均支持SQLite分页)
由于Sqlite的开发,在日常的项目中,还是比较常见的,因此,为了方便,我把Sqlite的数据访问也集成到我的Winform框架系统中了,这样通过扩展,支持更多的数据库,项目视图如下所示。
如果你有Sqlite的项目开发,使用这个做好的框架,应该是能事半功倍的。
最后,希望和大家一起共同研究技术,探讨代码。。。
相关文章推荐
- 微软企业库4.1学习笔记(三十二)数据访问模块 在应用中使用数据访问模块
- 微软企业库之数据访问模块基本使用
- 微软企业库4.1学习笔记(三十二)数据访问模块 在应用中使用数据访问模块
- 微软企业库4.1学习笔记(三十二)数据访问模块 在应用中使用数据访问模块
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
- 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——中篇
- 微软企业库4.1学习笔记(三十七)日志模块 在应用中使用日志模块
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(2)
- Android——使用SQLite数据库访问
- 微软企业库--Policy使用Login Handler
- 使用adb工具访问sqlite数据库及常用命令
- 使用微软企业库,非分页sql语句得到分页数据方法
- 在VC6.0中使用C++访问sqlite数据库
- 微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—下篇
- 微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用
- 学习笔记附录:动软代码生成器和微软企业库的使用
- 关于.Net使用企业库访问MySql数据库
- 微软企业库5.0 学习之路——第九步、使用PolicyInjection模块进行AOP—PART2——自定义Matching Rule
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(3)