使用C++进行微型数据库SQLite操作

日期: 2010-04-18 作者:moonz-wu 来源:TechTarget中国 英文

  微型数据库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表的信息被输出。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

moonz-wu
moonz-wu

相关推荐