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

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

标签: none

添加新评论