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
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>
#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 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;
}
{
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 *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;
}
return 0;
}
WIN 2K和WIN XP直接进入系统无
在VC6.0中使用C++访问sqlite




