clq
浏览(0) +
2005-06-29 23:29:23 发表
编辑
关键字:
SQLite作为一种可嵌入程序本身的数据库来说是极其有名了.它与mysql各占自身领域的领先/重要地位.
不过除了apache外,似乎所有的开源都不好编译.SQLite也是同样没有一个完整的VC工程文件.因为我很想要将来换掉目前公司用的自己写的那一套已经满目疮痍的自定义结构,所以今天测试了一下,发现果然不错.编译的方法其实也不困难,只不过要对VC的IDE有相当的了解--这主要针对delphi等程序员而言(因为我本身也是一个delphi程序员).
编译总的说来只要将sqlite的文件全部加入工程就可以了,然后作一些设置.
首先建立一个普通的VC程序,如果用到了MFC请将预编译去掉,方法如下图:
clq
[图片]
...
clq
[图片]
再设置一下SQLite的源文件的头文件路径,如图:
clq
[图片]
新建立一个虚拟目录,将SQLite的源文件全部加入.如图:
clq
[图片]
最后加入一个"NO_TCL"的预定义.如图:
clq
OK.至此SQLite的配置全部完成.让我们来一段程序吧.
///////////////////////////
//参考: http://www.sqlite.org/quickstart.html
[code]
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{//访问数据的回调函数
int i;
for(i=0; i<argc; i++)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
void CSqlite1Dlg::OnButton1()
{
sqlite3 *db;
int rc;
char *zErrMsg = 0;
//打开数据库
sqlite3_open("c:\\sqlite1.db", &db);
//创建表
rc = sqlite3_exec(db, "create table t2(id1 integer, name1 varchar(100))", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
//加入索引
rc = sqlite3_exec(db, "create index t2_idx on t2(name1)", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
//加入数据
rc = sqlite3_exec(db, "insert into t2 (id1,name1) values(10,\"中文\")", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
rc = sqlite3_exec(db, "insert into t2 (id1,name1) values(10,\"英文\")", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
rc = sqlite3_exec(db, "select * from t2 order by name1", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
/*
//返回的数据集
callback_data r_data;
rc = sqlite3_exec(db, "select * from t1", 0, &r_data, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
*/
sqlite3_close(db);
}
[/code]
很棒!确实名不虚传.
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.