博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用微软企业库EnterpriseLibary访问SQLite数据库
阅读量:5132 次
发布时间:2019-06-13

本文共 3366 字,大约阅读时间需要 11 分钟。

SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎,SQLite用的非常广泛,支持通用的SQL92标准,支持事务操作,

支持最大可达2T的数据库,在小型数据库使用性能上由于微软的Access数据库等等特点。

由于默认的微软企业库EnterpriseLibary不支持

SQLite的数据库访问,因此需要在
企业库EnterpriseLibary中访问这种数据库的话,需要使用一个企业库的扩展类库,该类库可以  上下载,结合一起使用,非常方便,很好的利用了微软企业库的优势和特点。

默认如果没有采用微软

企业库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的项目开发,使用这个做好的框架,应该是能事半功倍的。

最后,希望和大家一起共同研究技术,探讨代码。。。 

 

 

转载于:https://www.cnblogs.com/wuhuacong/archive/2012/01/03/2311338.html

你可能感兴趣的文章
Shell脚本获取C语言可执行程序返回值
查看>>
ASCII 32个控制字符含义
查看>>
zoj2589
查看>>
tensorflow TypeError: Can not convert a float32 into a Tensor or Operation
查看>>
node.js初识11
查看>>
spring security自定义拒绝访问页面
查看>>
LINQ基础学习2
查看>>
窗口输入
查看>>
又一个月了
查看>>
Linux无法登录,显示module is unknown,一闪而过
查看>>
Revolving Digits(hdu4333)
查看>>
设计模式其中12种总结
查看>>
CLOSE_WAIT、CLOSE_WAIT原因,危害,如何避免
查看>>
.Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南
查看>>
Creating Directives that Communicate
查看>>
Pascal之while
查看>>
MFC基于CAsyncSocket套接字客户端代码示范
查看>>
IRepository
查看>>
逻辑运算符的使用
查看>>
docker化php项目发布方式
查看>>