• vs2013 SQLite数据库增删改查


    代码:Database2.7z

    Database.h:

     1 #pragma once
     2 
     3 #include<string>
     4 #include<vector>
     5 #include<Windows.h>
     6 #include<tchar.h>
     7 #include<iostream>
     8 
     9 #include"sqlite3.h"
    10 
    11 using namespace std;
    12 
    13 class Database{
    14 public:
    15     Database();
    16     ~Database();
    17     bool initDatabase();//打开数据库,成功返回true
    18     bool createTable(std::string tablename);//在数据库中创建一个表
    19     void showData();//输出数据库中的数据
    20     bool insertDatabase(string tablename, string name, string number);
    21     bool queryDatabase(string tableName);
    22     void dropTable(string tableName);
    23     void deleteData(string tableName);
    24     void changeData(string tableName);
    25 
    26 private:
    27     sqlite3* db;
    28     sqlite3_stmt* stmt;
    29 };
    30 
    31 static int callback(void* data, int argc, char** argv, char** azColName);

    Database.cpp:

      1 #pragma once
      2 
      3 #include"Database.h"
      4 
      5 vector<string> vstr;
      6 vector<string> vnumber;
      7 
      8 static int callback(void* data, int argc, char** argv, char** azColName){
      9     for (int i = 0; i < argc; i++){
     10         switch (i + 1){
     11         case 0:
     12             break;//id已弃用
     13         case 1:
     14             vstr.push_back(string(argv[i])); break;
     15         case 2:
     16             vnumber.push_back(string(argv[i])); break;
     17         default:
     18             break;
     19         }
     20     }
     21     return 0;
     22 }
     23 
     24 Database::Database(){
     25 
     26 }
     27 
     28 Database::~Database(){
     29 
     30 }
     31 
     32 bool Database::initDatabase(){
     33     int rc = sqlite3_open("TestDB.db", &db);
     34     if (rc){
     35         MessageBox(NULL, _T("数据库打开失败!"), 0, 0);
     36         return false;
     37     }
     38     return true;
     39 }
     40 
     41 bool Database::createTable(std::string tablename){
     42     string sql = "CREATE TABLE TEST ( "    
     43         "NAME TEXT NOT NULL,"    
     44         "NUMBER TEXT NOT NULL)";
     45     char* zErrMsg = 0;
     46     int rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
     47     if (rc != SQLITE_OK){
     48         return false;
     49     }
     50     return true;
     51 }
     52 
     53 void Database::showData(){
     54     if (vstr.size() == 0){
     55         cout << "数据库中没有数据!
    ";
     56         return;
     57     }
     58     for (vector<string>::iterator i = vstr.begin(); i != vstr.end(); i++){
     59         cout << i->data() << "  ";
     60     }
     61     cout << "
    ";
     62     for (int i = 0; i < vnumber.size(); i++){
     63       cout << vnumber[i] << "  ";
     64     }
     65     cout << "
    ";
     66 }
     67 
     68 bool Database::insertDatabase(string tablename, string name, string number){
     69     string sql = "INSERT INTO " +
     70         tablename +
     71         " ( NAME, NUMBER)" +
     72         " VALUES('" +
     73         name +
     74         "','" +
     75         number +
     76         "');";
     77     char* zErrMsg = 0;
     78     int rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
     79     if (rc != SQLITE_OK){
     80         MessageBox(NULL, sql.c_str(), NULL, NULL);
     81         return false;
     82     }
     83     return true;
     84 }
     85 
     86 bool Database::queryDatabase(string tableName){
     87     string sql = "SELECT * FROM ";
     88     sql += tableName;
     89     char* zErrMsg = 0;
     90     int rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
     91     return true;
     92 }
     93 
     94 void Database::dropTable(string tableName){
     95     string sql = "DROP TABLE ";
     96     sql += tableName;
     97     char* zErrMsg = 0;
     98     int rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
     99 }
    100 
    101 void Database::deleteData(string tableName){
    102     string sql = "DELETE FROM ";
    103     sql += tableName;
    104     char* zErrMsg = 0;
    105     int rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
    106 }
    107 
    108 void Database::changeData(string tableName){
    109     string sql = "UPDATE  TEST SET NAME = 'MYTEST'";
    110         char* zErrMsg = 0;
    111     int rc = sqlite3_exec(db, sql.c_str(), callback, 0, &zErrMsg);
    112 }

    main.cpp:

     1 #include"Database.h"
     2 
     3 int main(){
     4     Database* db = new Database;
     5     db->initDatabase();
     6     db->createTable("");
     7     db->insertDatabase("TEST", "test", "1");
     8     db->changeData("vv");
     9     db->queryDatabase("TEST");
    10     db->showData();
    11     db->deleteData("TEST");
    12     db->dropTable("TEST");
    13     delete db;
    14     system("pause");
    15     return 0;
    16 }
  • 相关阅读:
    如何阅读大型代码库?
    发现一个时隐时现的bug!
    写给开发者:记录日志的10个建议
    教你一眼认出英语单词的意思
    为什么我要使用一个20年前的IBM老键盘
    有了screen,妈妈再也不用担心我的学习啦
    一次优秀的代码提交应该包含什么?
    你需要的不是重构,而是理清业务逻辑
    Android中监听ListView滑动到底部
    Android中的Handler,Looper,Message机制
  • 原文地址:https://www.cnblogs.com/Toya/p/11404554.html
Copyright © 2020-2023  润新知