SQLite在VC下的使用

来源:互联网 发布:排序的sql语句 编辑:程序博客网 时间:2024/06/05 19:16
SQLite在VC下的使用(转)http://www.sqlite.com.cn/MySqlite/4/523.Html 
一、SQLite简介 
   SQLite 是用C语言编写的开源数据库,主要用于嵌入式,你也可以把它集成在自己的桌面程序中,也有人将其替代Access,用作后台数据库。 
SQLite 支持多数SQL92标准,例如:索引、限制、触发和查看支持。 
支持 NULL、INTEGER、REAL、TEXT 和 BLOB 数据类型,支持事务。 
二、下载SQLite 
  SQLite可以到官方站点下载 
  http://www.sqlite.org/download.html 
  包括:Linux,Mac OS X, Windows下的已编译文件以及源代码、帮助文档。 
  VC中使用sqlite 
   SQLite官方下载只提供给我们一个sqlite3.dll跟一个sqlite3.def文件,并没有提供用于VC++6.0的lib文件,可以利用sqlite3.def文件生成,步骤如下: 
  1.将sqlite3.h(D:\sqlite-amalgamation-3_6_23.zip)拷贝到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目录下 
   4.将sqlite3.lib加入到工程链接中,Project->Settings,Link选项卡,Object/library modules最后添入sqlite3.lib 
D:\sqlitedll-3_6_23里有.dll和.def文件 
生成的lib在bin下 
这时以下程序便可通过VC编译链接并运行: 
#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; 

另外,在vc下编译sqlite源代码,出现can not find tcl.h 可以 去掉tclsqlite.c或者在这个文件前面添加#define NO_TCL 去掉tcl的支持 
三、SQLite的简单使用 
3.1 建立数据库 
C:\sqlite-3_6_11> sqlite3.exe dbname.db 
sqlite3.exe后面跟数据库文件名,它是进入编译阶段的入口指令 
3.2 创建数据表 
sqlite> create table users(userid varchar(20) PRIMARY KEY, 
   ...> age int, 
   ...> birthday datetime); 
3.3 添加记录 
insert into users values('wang',20,'1989-5-4'); 
insert into users values('li',22,'1987-11-16'); 
3.4 查询记录 
select * from users order by birthday; 
3.5 删除记录 
delete from users where userid='wang'; 
3.6 退出sqlite 
sqlite> .exit 
SQLite数据库的数据结构是存贮在 "sqlite_master" 表中 
具体命令可以输入 .help查看或参考帮助文档 
四、编译LIB 
需要到SQLite网站下载sqlitedll-3_6_11.zip,以VS 2008为例: 
在DOS命令行下: 
PATH = D:\Program Files\Microsoft Visual Studio 9.0\VC\bin;%PATH% 
PATH = D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;%PATH% 
LIB /DEF:sqlite3.def /machine:IX86 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq长时间不登录上不了怎么办 父母不会说英语怎么办英国签证 美军舰真来台湾怎么办 现役军人回家探亲和人打架怎么办 对四六不懂的人怎么办 赌球小2.5进3球怎么办 皮肤旧伤黑色斑怎么办 小米5c网络不好怎么办 小米去5c卡怎么办 戴尔游匣5577开机黑屏怎么办 三星s6的通知栏拉不下来怎么办 电脑记住密码打不开了怎么办 联想手机升级系统失败了怎么办 日本语言学校申请研究生签证怎么办 在埃塞俄比亚签证过期了怎么办 看完的小说想要卖掉该怎么办 在俄罗斯脸干了痛怎么办 苹果手表电池放亏了怎么办 平板电脑电池不耐用怎么办 计算机电池放入后没反应怎么办 笔记本电脑玩游戏花屏怎么办 笔记本玩游戏花屏怎么办 笔记本电脑充电插口坏了怎么办 车蓄电池没电了怎么办 汤浅q85电瓶亏电怎么办 富士康自离行李怎么办 微店红酒食品认证怎么办 yy频道提示禁止游客进入怎么办 口红颜色太艳了怎么办 我在菲律宾想走怎么办 当国家流通货币不够用怎么办 苹果5s账号密码忘记怎么办 钢铁雄心3补给不足怎么办 灯外观颜色太难看了怎么办 被移民公司骗了怎么办 文明5大包锁区怎么办 鸭子被黄鼠狼叼走了怎么办 黄鼠狼再店了拉屎怎么办 我只有信用卡但是又想去嫖怎么办 瑞士退税单掉了怎么办 装了新风噪音大怎么办