在路上...

导航

公告
 

学C++没几天,程序要用数据库,又不想用MFC的控件之类还没去研究的东西。便找了一个开源的,可以嵌入程序的小

型数据库SQLite(主页http://www.sqlite.org)。

先在http://www.sqlite.org/download.html下的Precompiled Binaries For Windows下载了sqlite-3_2_2.zip(

一个命令行的SQLite演示程序)和sqlitedll-3_2_2.zip(一个Dll)。
先运行命令行的SQLite演示程序,根据他提供的文档(是一个简单的教程)。

我用命令
“.output F:\编程\数据库\SQlite\sqlite-3_2_2\e”
在SQlite的工作目录下生成了一个文件名为“编程数据库SQlitesqlite-3_2_2e”的文件,但我想在C:\test\下生

成文件时,他报错说:

sqlite> .output c:\test\1
can't write to "c:      est?

不知道是为什么。

我接着用

sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;

新建一个表,添加两个数据,他输出
hello!|10
goodbye|20

下面是我在Google上搜索到的一篇教程。

少于五分钟的学习SQLite
译者: wide288

这告诉你怎么开始实验 SQLite ,这里没有长长的说明和配置。:

下载代码
取得一份二进制拷贝, 或者是源代码并自己编译它. 关于 下载页(download) 的更多信息.

创建一个新数据库
在 DOS 命令行下, 输入: "sqlite3 test.db". 将创建一个新的数据库文件名叫"test.db". (你可以使用不同的名

字)

输入 SQL 命令在提示符下创建和写入新的数据.

写程序使用 SQLite
下面是一个简单的 TCL 程序让我们看看怎么使用 sqlite 的 TCL 接口. 此程序执行 SQL 声明的第二个参数 执行

SQL命令. 这个命令是 sqlite3 在第 7 行打开一个 SQLite 数据库并且创建一个新的 TCL 命令,名字是"db" 连

接到数据库,这个 db 命令在第 8 行执行 SQL 命令对数据库,并且关闭与数据库的连接.

#!/usr/bin/tclsh
if {$argc!=2} {
puts stderr "Usage: %s DATABASE SQL-STATEMENT"
exit 1
}
load /usr/lib/tclsqlite3.so Sqlite3
sqlite3 db [lindex $argv 0]
db eval [lindex $argv 1] x {
foreach v $x(*) {
puts "$v = $x($v)"
}
puts ""
}
db close

下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C++ 接口. 数据库的名字由第一个参数取得且第二个参数或

更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 在 22 行打开数据库, sqlite3_exec() 在 27 行执

行 SQL 命令, 并且sqlite3_close() 在 31 行关闭数据库连接.

#include <stdio.h>
#include <sqlite3.h>

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;
}

int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;

if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
sqlite3_close(db);
return 0;
}

 

posted on 2005-08-01 01:34 AK747 阅读(...) 评论(...) 编辑 收藏