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下链接编译
SQLite是一款轻型开源的关系型数据库,在嵌入式系统、移动应用等领域广受欢迎。本文将介绍如何使用C语言编写SQLite程序,并给出一个简单的示例。 在编写SQLite程序前,需要先从官网http://www.sqlite.org/ 下载SQLite库文件,然后在编译时添加链接选项,例如在Linux系统下可以使用以下命令链接库文件: gcc -o test test.c -lsqlite3 在编写程序时,需要包含sqlite3.h头文件,同时使用sqlite3_open函数打开数据库连接。然后可以使用sqlite3_exec函数执行SQL语句,并通过回调函数获取执行结果。 下面是一个简单的示例程序,实现了创建数据库、创建表、插入数据、查询数据等基本操作: #include <stdio.h> #include <sqlite3.h> static int callback(void *data, 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; char *sql; /* Open database */ rc = sqlite3_open("test.db", &db); if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return(0); } else { fprintf(stdout, "Opened database successfully\n"); } /* Create SQL statement */ sql = "CREATE TABLE COMPANY(" \ "ID INT PRIMARY KEY NOT NULL," \ "NAME TEXT NOT NULL," \ "AGE INT NOT NULL," \ "ADDRESS CHAR(50)," \ "SALARY REAL );"; /* Execute SQL statement */ rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } else { fprintf(stdout, "Table created successfully\n"); } /* Insert data into table */ sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (1, 'Paul', 32, 'California', 20000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 );"; rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } else { fprintf(stdout, "Records created successfully\n"); } /* Select data from table */ sql = "SELECT * from COMPANY"; rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } /* Close database */ sqlite3_close(db); return 0; } 该程序首先使用sqlite3_open函数打开名为test.db的数据库连接,然后使用sqlite3_exec函数执行SQL语句创建名为COMPANY的表,接着向该表中插入数据,最后查询整张表数据并输出。在执行SQL语句时,该程序还使用了一个回调函数callback来处理查询结果。 以上是一个简单的SQLite C语言示例,使用SQLite数据库可以为嵌入式系统和移动应用提供高效的存储支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值