个人爱好sqlite,仅仅是因为他不用安装,向access一样,可以直接携带,至于它的优点,还没有去深入。。。
参看API说明: //http://www.sqlite.org/cintro.html
编译器:VC6.0
数据库:sqlite
头文件包:sqlite-amalgamation-3070601
使用时将sqlite3.h,sqlite3.c拷到目录下,或者直接添加include路径
#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
//回调函数print的编写;
//其中data为sqlite3_exec中的第四个参数
//第二个参数是栏的数目
//第三个是栏的名字
//第四个为查询得到的值得
//这两个函数输出所有查询到的结果
//该函数会被插入到每一行结果中
int print( void *data, int n_columns, char **column_values, char **column_names)
{
int i;
for(i = 0; i < n_columns; ++i)
printf( "列名:%s\n列值:%s\n", column_names[i], column_values[i]);
return 0;
}
char *datafile = "test.s3db";
char *createsql = "CREATE TABLE [test] ([id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [name] TEXT NOT NULL, [sex] TEXT NOT NULL);";
char *selectsql = "select * from test";
char *insertsql = "insert into test(name, sex) values(\'hahahah\', \'man\');";
char *deletesql = "delete from test where id < 6;";
int main( void)
{
sqlite3 *db=NULL;
char *errMsg;
int rc;
//打开一个数据库,如果改数据库不存在,则创建一个名字为datafile的数据库文件
if((rc = sqlite3_open(datafile, &db)) != SQLITE_OK)
{
fprintf(stderr, "打开数据库失败: %s\n", sqlite3_errmsg(db));
return 0;
}
else
{
if((rc = sqlite3_exec(db, createsql, 0, 0, &errMsg)) != SQLITE_OK)
{
printf( "创建数据库失败:%s\n", errMsg);
return 0;
}
else
{
printf( "创建表test成功\n");
}
}
if((rc = sqlite3_exec(db, selectsql, print, 0, &errMsg)) != SQLITE_OK) //查询
{
printf( "查询错误:%s\n", errMsg);
}
printf( "插入操作=========================================\n");
if((rc = sqlite3_exec(db, insertsql, 0, 0, &errMsg)) != SQLITE_OK) //删除
{
printf( "插入错误:%s\n", errMsg);
}
if((rc = sqlite3_exec(db, selectsql, print, 0, &errMsg)) != SQLITE_OK) //查询
{
printf( "查询错误:%s\n", errMsg);
}
printf( "删除操作=========================================\n");
if((rc = sqlite3_exec(db, deletesql, 0, 0, &errMsg)) != SQLITE_OK) //删除
{
printf( "删除错误:%s\n", errMsg);
}
if((rc = sqlite3_exec(db, selectsql, print, 0, &errMsg)) != SQLITE_OK) //查询
{
printf( "查询错误:%s\n", errMsg);
}
printf((sqlite3_close(db) == SQLITE_OK)? "close sqlite success\n": "close sqlite failed\n"); //关闭数据库
return 0;
}