解压出全部文件,编译就可以生成sqlite程序了
用VC6的编译步骤:
新建一个空的控制台程序名字就叫sqlite
将上面的全部文件加入工程
在定义一个预处理变量NO_TCL
编译生成sqlite.exe就可以用了
既然是嵌入式,哦想应该是把sqlite嵌入别的程序吧
改代码:
打开文件shell.c
把原来的main函数关掉
加入自己的代码如下
CODE
//--test
//--请参考callback
int select_callback(void *pArg, int nArg, char **azArg, char **azCol){
int i;
struct callback_data *p = (struct callback_data*)pArg;
switch( p->mode ){
case MODE_Semi:
case MODE_List: {
if( azArg==0 ) break;
for(i=0; i<nArg; i++){
char *z = azArg[i];
if( z==0 ) z = p->nullvalue;
fprintf(p->out, "%s", z);
if( i<nArg-1 ){
fprintf(p->out, "%s", p->separator);
}else if( p->mode==MODE_Semi ){
fprintf(p->out, ";\n");
}else{
fprintf(p->out, "\n");
}
}
break;
}
}
return 0;
}
int main(int argc, char **argv){
char *zErrMsg = 0;
struct callback_data data;
int i;
extern int sqlite3OsFileExists(const char*);
char * SQL;
int rc;
main_init(&data);
//--数据库文件
data.zDbFilename = "C:\\tmp\\sqlitet1.db";
data.out = stdout;
if( sqlite3OsFileExists(data.zDbFilename) )
{
open_db(&data);
}
else
{
//--open先
open_db(&data);
//--删除表
SQL = "drop table t1;";
rc = sqlite3_exec(data.db, SQL, NULL, &data, &zErrMsg);
//--建表
SQL = "create table t1(id INTEGER, name VARCHAR(100));";
rc = sqlite3_exec(data.db, SQL, NULL, &data, &zErrMsg);
//--插入初始化数据
SQL = "insert into t1 values(0, '大话王');";
rc = sqlite3_exec(data.db, SQL, NULL, &data, &zErrMsg);
//--continue
for (i = 1; i < 100; i++)
{
SQL = "insert into t1 values(%d, '%d大话王');";
rc = sqlite3_exec_printf(data.db, SQL, NULL, &data, &zErrMsg,
i, i);
}
}
//--查询
SQL = "select count(*) from t1;";
rc = sqlite3_exec(data.db, SQL, select_callback, &data, &zErrMsg);
//--continue
SQL = "select * from t1;";
rc = sqlite3_exec(data.db, SQL, select_callback, &data, &zErrMsg);
set_table_name(&data, 0);
if( db ) sqlite3_close(db);
return 0;
}
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=242880