c++使用sqlite3的例子

3 篇文章 0 订阅

这个代码可在windows下运行,不过需要下载库文件, 在上一篇博客中有提到如何下载 .

若是在linux下运行代码, 下载好sqlite3后(linux下简单得多), 将头文件”sqlite3.h” 改成
“<”sqlite3.h>就可以了

#include <stdio.h>
#include <string>
#include <iostream>
#include "sqlite3.h" 
using namespace std;

string s;
int callback(void*para , int nCount, char** pValue, char** pName) {
    s = "";
    for(int i=0;i<nCount;i++){ 
          s+=pValue[i];  
    } 
    return 0; 
}

class database {
public:
  database() {
    rc = sqlite3_open("database.db", &db);
  }
  ~database() {
    cout << "bye!" << endl;
    sqlite3_close(db);
  }
  void new_table() {
    const char *sql;
    string name;
    string temp;
    cout << "please enter table's name" << endl;
    cin >> name;
    temp = "CREATE TABLE "+name+
           "(NAME          TEXT    NOT NULL,"+
           "AGE            INT     NOT NULL);";
    sql = temp.c_str();
    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
  }
  void add() {
    const char *sql;
    string table_name, name, age, tmp;
    cout << "please input table's name" << endl;
    cin >> table_name;
    cout << "please input user's name" << endl;
    cin >> name;
    cout << "please input user's age" << endl;
    cin >> age;
    tmp = "insert into " + table_name + "(NAME, AGE)"+
          "values('" + name + "'," + age + ");";
    sql = tmp.c_str();
    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
  }
  void check(){
    const char *sql;
    string table_name, name, tmp;
    cout << "please input table's name" << endl;
    cin >> table_name;
    cout << "please input your name" << endl;
    cin >> name;
    tmp = "select AGE from "+table_name+" where NAME='"+name+ "';";
    sql = tmp.c_str();
    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
    cout << s << endl;
  }
  void loop() {
    int c;
    while(1) {
      cout << "-----------------------------\n" <<
              "name & age\n" <<
              "1 to add new table\n" <<
              "2 to insert information\n" <<
              "3 to check information\n" <<
              "4 to quit\n" <<
              "-----------------------------\n";
      cin >> c;
      switch(c) {
        case 1:new_table();
               break;
        case 2:add();
               break;
        case 3:check();
               break;
        case 4:return;
               break;
        default:cout << "\nplease enter again!" << endl;
      }
    }
  }
private:
   sqlite3 *db;
   char *zErrMsg = 0;
   int rc;
};
int main() {
  database a;
  a.loop();

}
//gcc -shared sqlite3.c -o sqlite3.dll  win下链接
//gcc 1.cpp -lstdc++ sqlite3.c          win下编译  

//g++ 1.cpp -l sqlite3                  linux下链接编译
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值