C#使用SQLite数据库(asp.net/winform)
2009年1月7日
评论
发表评论
SQLite
是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里
说明
对各种语言的支持也比较不错,wrapper很多。
Google
Gears 、Mozilla
和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的
SQLite 的关键字列表,这里
支持的sql语法,在这里
在 .NET
里面使用 SQLite
, 我这里使用的wrapper是 System.Data.SQLite
,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient
, OleDb
等原生的一致
using System.Data;
using System.Data.SQLite;
//...
using (SQLiteConnection cn = new SQLiteConnection(
"Data Source=Test.db3;Pooling=true;FailIfMissing=false")
)
{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录 ......
C#使用SQLite数据库(asp.net/winform)
2009年1月7日
评论
发表评论
SQLite
是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里
说明
对各种语言的支持也比较不错,wrapper很多。
Google
Gears 、Mozilla
和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的
SQLite 的关键字列表,这里
支持的sql语法,在这里
在 .NET
里面使用 SQLite
, 我这里使用的wrapper是 System.Data.SQLite
,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient
, OleDb
等原生的一致
using System.Data;
using System.Data.SQLite;
//...
using (SQLiteConnection cn = new SQLiteConnection(
"Data Source=Test.db3;Pooling=true;FailIfMissing=false")
)
{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录 ......
C#使用SQLite数据库(asp.net/winform)
2009年1月7日
评论
发表评论
SQLite
是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里
说明
对各种语言的支持也比较不错,wrapper很多。
Google
Gears 、Mozilla
和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的
SQLite 的关键字列表,这里
支持的sql语法,在这里
在 .NET
里面使用 SQLite
, 我这里使用的wrapper是 System.Data.SQLite
,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点
因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient
, OleDb
等原生的一致
using System.Data;
using System.Data.SQLite;
//...
using (SQLiteConnection cn = new SQLiteConnection(
"Data Source=Test.db3;Pooling=true;FailIfMissing=false")
)
{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录 ......
文中的SQL都是从我的项目中直接copy过来,因此很多表名什么都有了
//创建表
"CREATE TABLE FEED_TABLE(FeedID TEXT, Title TEXT, Summary TEXT, Author TEXT, ImageName VARCHAR(21), ImageType TEXT, MaxIndex INT, ImageData BLOB)"
//查询记录
"select * form 'table_name'"
"select * form 'table name' where value = '?'"
//插入记录
"INSERT INTO FEED_TABLE(FeedID, Title, Summary, ImageName, ImageType, MaxIndex) VALUES('%s', '%s', '%s', '%s', '%s', %d)"
//更新记录
"update 'table_name' 'column_name' = 'value'"
//删除记录
"DELETE from FAVORITE_TABLE WHERE EntryIndex = %d"
//删除所有记录
"delete from 'table_name'"
//删除表
"drop table 'table_name'"
//查询表结构
"select sql from sqlite_master where name = 'table_name'"
callback的第三个参数
另外,sqlite3是支持事务的
int result;
result = sqlite3_exec( db, "begin transaction", 0, 0, &zErrorMsg ); //开始一个事务
result = sqlite3_exec( db, "commit transaction", 0, 0, &zErrorMsg ); //提交事务
result = sqlite3_exec( db, "rollback tran ......
文中的SQL都是从我的项目中直接copy过来,因此很多表名什么都有了
//创建表
"CREATE TABLE FEED_TABLE(FeedID TEXT, Title TEXT, Summary TEXT, Author TEXT, ImageName VARCHAR(21), ImageType TEXT, MaxIndex INT, ImageData BLOB)"
//查询记录
"select * form 'table_name'"
"select * form 'table name' where value = '?'"
//插入记录
"INSERT INTO FEED_TABLE(FeedID, Title, Summary, ImageName, ImageType, MaxIndex) VALUES('%s', '%s', '%s', '%s', '%s', %d)"
//更新记录
"update 'table_name' 'column_name' = 'value'"
//删除记录
"DELETE from FAVORITE_TABLE WHERE EntryIndex = %d"
//删除所有记录
"delete from 'table_name'"
//删除表
"drop table 'table_name'"
//查询表结构
"select sql from sqlite_master where name = 'table_name'"
callback的第三个参数
另外,sqlite3是支持事务的
int result;
result = sqlite3_exec( db, "begin transaction", 0, 0, &zErrorMsg ); //开始一个事务
result = sqlite3_exec( db, "commit transaction", 0, 0, &zErrorMsg ); //提交事务
result = sqlite3_exec( db, "rollback tran ......
SQLite小巧的特点使其在嵌入式上利用很广泛。越来越多的移动设备上加入了SQLite模块,android,sysmbian, iphone,...下面的介绍让你快速步入SQLite的大门。
1. 下载
SQLite是开源的项目,所以你可以下载完速的源代码。开发的时候你可以把源代码嵌入你的工程当中,也可以用编译好的二进制文件。你可以在这儿下载SQLite.
2.建数据库
在命令行输入:sqlite3 test.db。 就可以创建一个名为test.db的数据库。
3.在程序中利用SQLite数据库
下面是一个简单的C程序, 展示了在C/C++中如何用SQLite。
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1 ......
文章来源于http://blog.csdn.net/ast_224/archive/2009/01/08/3734099.aspx
Sqlite
常用函数:
1
、打开数据库:
说明:打开一个数据库,文件名不一定要存在,如果此文件不存在,
sqlite
会自动创建。第一个参数指文件名,第二个参数则是定义的
sqlite3 **
结构体指针(关键数据结构),这个结构底层细节如何,您不用管它。
int sqlite3_open( ......
1. 打开内存数据库
直接打开一个名为":memory:"或者 名字直接为空的数据库, 两种数据库略微有些区别。
参考 :http://www.sqlite.org/inmemorydb.html
2. 保存内存数据库
3. 判断表是否存在
通过查询系统表sqlite_master来获取相关信息
select * from sqlite_master where type='table' and name='表名' ......