Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54353
  • 博文数量: 29
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-30 13:50
文章分类

全部博文(29)

文章存档

2011年(1)

2009年(28)

我的朋友

分类: WINDOWS

2009-06-26 23:17:13

 

首先下载源码:

dllexp文件:
exe文件 :
建立数据库

利用上面下载的exe文件,建立数据库C:\sqlite-3_6_11> sqlite3.exe dbname.db

sqlite3.exe后面跟数据库文件名

创建数据表

sqlite> create table users(userid varchar(20) PRIMARY KEY,

   ...> age int,

   ...> birthday datetime);

添加记录

insert into users values('wang',20,'1989-5-4');

insert into users values('li',22,'1987-11-16');

查询记录

select * from users order by birthday;

删除记录

delete from users where userid='wang';

退出sqlite

sqlite> .exit

SQLite数据库的数据结构是存贮在 "sqlite_master" 表中

具体命令可以输入 .help查看或参考帮助文档

windows下有sqlite的可视化开发工具(SQLite Expert Personal)而且是免费的 下载地址:

vc中的使用:

由下载的SQLite3.dllSQLite3.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


 

阅读(1778) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~