VC中使用sqlite[转]

SQLite官方下载只提供给我们一个sqlite3.dll跟一个sqlite3.def文件,并没有提供用于VC++6.0的lib文件,可以利用sqlite3.def文件生成,步骤如下:
1.将sqlite3.h(可从源码目录获得)拷贝到C:\Program Files\Microsoft Visual Studio\VC98\Include目录下,这时编译可通过,但链接错误,因为没有LIB文件
2.启动一个命令行程序,进入VC的安装目录C:\Program Files\Microsoft Visual Studio\VC98\Bin,在这个目录下面有一个LIB.exe文件,使用它就能生成sqlite3.lib文件,将sqlite3.def文件放 到相同目录,或者绝对路径也可以,   然后在命令行输入如下命令:
LIB /MACHINE:IX86 /DEF:sqlite3.def
该命令生成两个文件:sqlite3.lib和sqlite3.exp
运行该命令时,如果提示找不到MSPDB60.DLL文件,可从其它目录拷贝至Bin目录下
3.将生成的sqlite3.lib拷贝到Lib目录下,将sqlite3.dll拷贝到C:\WINNT\system32目录下
5.将sqlite3.lib加入到工程链接中,Project->Settings,Link选项卡,Object/library modules最后添入sqlite3.lib
这时以下程序便可通过编译链接并运行:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
int column_names_printed = 0;
void print_row(int n_values, char** values)
{
      int i;
      for (i = 0; i < n_values; ++i) {
          printf("%10s", values[i]);
      }
      printf("\n");
}
int print_result(void* data, int n_columns, char** column_values, char** column_names)
{
      if (!column_names_printed) {
          print_row(n_columns, column_names);
          column_names_printed = 1;
      }
    
      print_row(n_columns, column_values);
   
     return 0;
}
int main()
{
      sqlite3 *db=NULL;
      char *errMsg = NULL;
      int rc;
    
      rc = sqlite3_open("test.db", &db);
      if( rc ){
          fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
          sqlite3_close(db);
          exit(1);
      }
      else printf("open test.db successfully!\n");
    
      rc = sqlite3_exec(db, "BEGIN TRANSACTION;", NULL, NULL, NULL);
      rc = sqlite3_exec(db, "CREATE TABLE students(number varchar(10), name varchar(10), \
                             sex varchar(6), age varchar(2));", NULL, NULL, NULL);
      rc = sqlite3_exec(db, "INSERT INTO students VALUES('00001', 'Mary', 'female', '15');\
                             INSERT INTO students VALUES('00002', 'John', 'male', '16');\
                             INSERT INTO students VALUES('00003', 'Mike', 'male', '15');\
                             INSERT INTO students VALUES('00004', 'Kevin', 'male', '17');\
                             INSERT INTO students VALUES('00005', 'Alice', 'female', '14');\
                             INSERT INTO students VALUES('00006', 'Susan', 'female', '16');\
                             INSERT INTO students VALUES('00007', 'Christina', 'female', '15');\
                             INSERT INTO students VALUES('00008', 'Brian', 'male', '16');\
                             INSERT INTO students VALUES('00009', 'Dennis', 'male', '14');\
                             INSERT INTO students VALUES('00010', 'Daphne', 'female', '18');",
                             NULL, NULL, &errMsg);
    
      column_names_printed = 0;
      rc = sqlite3_exec(db, "SELECT students.* FROM students WHERE sex='female';", print_result, NULL, &errMsg);
      column_names_printed = 1;
      printf("\n");
      column_names_printed = 0;
      rc = sqlite3_exec(db, "SELECT students.* FROM students WHERE sex='male';", print_result, NULL, &errMsg);
      column_names_printed = 1;
    
      rc = sqlite3_exec(db, "COMMIT TRANSACTION;", NULL, NULL, NULL);
    
      printf("error code: %d\n", rc);
      printf("error message: %s\n", errMsg);
      sqlite3_close(db);
      return 0;
}
作者:ccczqh | 时间:June 12, 2008 10:44 | 分类:精彩网文 | 评论(0) | 阅读(188)
发表评论
 昵称 [注册]
 密码 (游客无需密码)
 网址
 电邮
打开HTML 打开UBB 打开表情 隐藏 记住我