SQLite开发
微型数据库SQLite拥有着大多数大型数据库无可比拟的灵活和精简。你可以用所有想象得到的开发语言去开发一个微型的数据库。你可以在这里找到所有想要的信息http://www.sqlite.org/。它支持了大多数关系数据库的基本特性,但是这使得数据库的应用变的很灵活。下面是一个用C++操作SQLite数据库的例子。
1. 你需要先从官网上下载SQLite的源代码文件,因为是开源的项目,所以我们可以拷贝代码到我们的工程中,这得感谢那些品德高尚的SQLite作者们。
2. 添加解压后的sqlite3.cpp, sqlite3.h到你的工程中,这里我使用vs2010.
3. 尝试下面的代码,来创建一个SQLite DB文件
代码
sqlite3* db;
int rc;
int rc;
// 打开或创建一个数据库文件
rc = sqlite3_open_v2(c_litedb_file.c_str(), &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
rc = sqlite3_open_v2(c_litedb_file.c_str(), &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if( rc ){
cerr << "Can't open database: " << sqlite3_errmsg(db) << endl;
sqlite3_close(db);
return LITEDB_ERROR_CREATE_DB_FAILED;
}
cerr << "Can't open database: " << sqlite3_errmsg(db) << endl;
sqlite3_close(db);
return LITEDB_ERROR_CREATE_DB_FAILED;
}
4. 在打开一个数据库文件后,你就可以执行任意的合法的SQL语句了。依然是C++函数
代码
int rc;
char *szErrMsg = 0;
// 第三个参数是一个回调函数,你可以通过这个函数得到执行的一些信息
rc = sqlite3_exec(pHandle->pSqlite, sqlCommand.c_str(), NULL, 0, &szErrMsg);
if( rc!=SQLITE_OK ){
cerr << "SQL error: " << szErrMsg << endl;
sqlite3_free(szErrMsg);
return LITEDB_ERROR_EXECUTE_FAILED;
}
char *szErrMsg = 0;
// 第三个参数是一个回调函数,你可以通过这个函数得到执行的一些信息
rc = sqlite3_exec(pHandle->pSqlite, sqlCommand.c_str(), NULL, 0, &szErrMsg);
if( rc!=SQLITE_OK ){
cerr << "SQL error: " << szErrMsg << endl;
sqlite3_free(szErrMsg);
return LITEDB_ERROR_EXECUTE_FAILED;
}
假设,这里的SQL语句是
代码
CREATE TABLE IF NOT EXISTS [log] (
[domain] [nvarchar] (64) NOT NULL ,
[tag_host] [nvarchar] (64) NOT NULL ,
[id] INTEGER PRIMARY KEY ,
[product_flag] int NOT NULL ,
[type] [int] NOT NULL ,
[log_time] [datetime] NOT NULL ,
[message] [nvarchar] (1024) NULL ,
[update_time] [datetime] NOT NULL
);
[domain] [nvarchar] (64) NOT NULL ,
[tag_host] [nvarchar] (64) NOT NULL ,
[id] INTEGER PRIMARY KEY ,
[product_flag] int NOT NULL ,
[type] [int] NOT NULL ,
[log_time] [datetime] NOT NULL ,
[message] [nvarchar] (1024) NULL ,
[update_time] [datetime] NOT NULL
);
5. 最后,我们需要关闭数据库的链接,使用 sqlite3_close(pHandle->pSqlite); 语句。
6. 我们可以通过在命令行里执行:
> sqlite3 testdb
sql_lite> select * from sqlite_master;
sql_lite> select * from sqlite_master;
来验证我们的执行结果,你可以看到一个log表的信息被输出。
将想法付诸于实践,借此来影响他人是一个人存在的真正价值