分类: WINDOWS
2009-06-26 23:17:13
首先下载源码:
dll,exp文件:
exe文件 :
1 建立数据库
利用上面下载的exe文件,建立数据库C:\sqlite-3_6_11> sqlite3.exe dbname.db
sqlite3.exe后面跟数据库文件名
2 创建数据表
sqlite> create table users(userid varchar(20) PRIMARY KEY,
...> age int,
...> birthday datetime);
3 添加记录
insert into users values('wang',20,'1989-5-4');
insert into users values('li',22,'1987-11-16');
4 查询记录
select * from users order by birthday;
5 删除记录
delete from users where userid='wang';
6 退出sqlite
sqlite> .exit
SQLite数据库的数据结构是存贮在 "sqlite_master" 表中
具体命令可以输入 .help查看或参考帮助文档
在windows下有sqlite的可视化开发工具(SQLite Expert Personal)而且是免费的 下载地址:
在vc中的使用:
由下载的SQLite3.dll和SQLite3.def文件生成lib文件
设置环境变量:(dos环境)
PATH = D:\Program Files\Microsoft Visual Studio\VC98\bin;%PATH%
生成lib文件:进入def文件目录(与环境变量的设置是在同一dos窗口)
LIB /DEF:sqlite3.def /machine:IX86
D:\Program Files\Microsoft Visual Studio是我vc的安装路径
在vc中新建工程
把源码中的sqlite3.h加入到工程文件中,并把sqlite3.lib复制到工程目录下(不要把sqlite3.c也加入到工程文件中要不然编译时会有一大堆的警告!)
#include "sqlite3.h"
#pragma comment(lib, "sqlite3.lib")//也可以在project->setting->link中指定
static int _sql_callback(void * notused, int argc, char ** argv, char ** szColName)
{
int i;
for ( i=0; i < argc; i++ )
{
printf( "%s = %sn", szColName[i], argv[i] == 0 ? "NUL" : argv[i]);
}
return 0;
}
int main(int argc, char * argv[])
{
const char * sSQL1 = "create table users(userid varchar(20) PRIMARY KEY, age int, birthday datetime);";
const char * sSQL2 = "insert into users values('wang',20,'1989-5-4');";
const char * sSQL3 = "select * from users;";
sqlite3 * db = 0;
char * pErrMsg = 0;
int ret = 0;
// 连接数据库
ret = sqlite3_open("./test.db", &db);
if ( ret != SQLITE_OK )
{
fprintf(stderr, "无法打开数据库: %s", sqlite3_errmsg(db));
return(1);
}
printf("数据库连接成功!n");
// 执行建表SQL
sqlite3_exec( db, sSQL1, 0, 0, &pErrMsg );
if ( ret != SQLITE_OK )
{
fprintf(stderr, "SQL error: %sn", pErrMsg);
sqlite3_free(pErrMsg);
}
// 执行插入记录SQL
sqlite3_exec( db, sSQL2, 0, 0, &pErrMsg);
// 查询数据表
sqlite3_exec( db, sSQL3, _sql_callback, 0, &pErrMsg);
// 关闭数据库
sqlite3_close(db);
db = 0;
return 0;
}
有可能遇到的错误:
test.obj : error LNK2001: unresolved external symbol _sqlite3_exec
test.obj : error LNK2001: unresolved external symbol _sqlite3_close
test.obj : error LNK2001: unresolved external symbol _sqlite3_errmsg
test.obj : error LNK2001: unresolved external symbol _sqlite3_open
Debug/MyTest.exe : fatal error LNK1120: 5 unresolved externals
因为不能找到链接库,Project | Settings... | Link: Object/Library Modules:后面添加sqlite3.lib,再编译通过。也可以在Test.C中添加#pragma comment(lib, "sqlite3.lib")实现相同的效果。
参考文章:http://blog.pfan.cn/lounger/26750.html