SQLite开发

微型数据库SQLite拥有着大多数大型数据库无可比拟的灵活和精简。你可以用所有想象得到的开发语言去开发一个微型的数据库。你可以在这里找到所有想要的信息http://www.sqlite.org/。它支持了大多数关系数据库的基本特性,但是这使得数据库的应用变的很灵活。下面是一个用C++操作SQLite数据库的例子。

1. 你需要先从官网上下载SQLite的源代码文件,因为是开源的项目,所以我们可以拷贝代码到我们的工程中,这得感谢那些品德高尚的SQLite作者们。

2. 添加解压后的sqlite3.cpp, sqlite3.h到你的工程中,这里我使用vs2010.

3. 尝试下面的代码,来创建一个SQLite DB文件

 

代码
    sqlite3* db;

    
int rc;    
   // 打开或创建一个数据库文件
    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;
    }

 

 

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

 

假设,这里的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 
    );

 

 

5. 最后,我们需要关闭数据库的链接,使用 sqlite3_close(pHandle->pSqlite); 语句。

6. 我们可以通过在命令行里执行:

> sqlite3 testdb
sql_lite
> select * from sqlite_master;

 

来验证我们的执行结果,你可以看到一个log表的信息被输出。

posted @ 2010-04-16 23:40  moonz-wu  阅读(2073)  评论(0编辑  收藏  举报