日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

SQLite3单例模式(C++)

發布時間:2025/3/21 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQLite3单例模式(C++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注意:這代碼只能在linux底下運行。

.h 文件 (我的文件是MySql.h)

#ifndef MYSQL_H #define MYSQL_H#include <sqlite3.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <iostream> using namespace std;class MySql { public:static MySql *Instance() //獲取唯一單例對象{if(!m_sql)m_sql = new MySql();return m_sql;}void Init(const char* fileName); //初始化void InsertData(); //插入數據void SelectData(int id); //通過id查詢數據 private:MySql(); //私有 防止外部調用~MySql();static MySql* m_sql; //靜態指針保存單例對象static sqlite3 * db; //數據庫類指針char *Sql_statement; //存放執行語句sqlite3_stmt *stmt; //標記數據庫的執行信息int rc; //執行返回結果 };#endif // MYSQL_H

.cpp文件 (我的文件是MySql.cpp)

#include "MySql.h"sqlite3 *MySql::db; MySql *MySql::m_sql = NULL;MySql::MySql() {Sql_statement = new char[1024];memset(Sql_statement,0,1024);this->Init("data.db"); }MySql::~MySql() {delete []this->Sql_statement; } //初始化,打開數據庫、創建表 void MySql::Init(const char* fileName) {this->rc = sqlite3_open(fileName,&db);if(this->rc == SQLITE_OK){strcpy(this->Sql_statement,"create table student(id int primary key,name text,age int)");this->rc = sqlite3_exec(db,Sql_statement,NULL,NULL,&errMes);if(rc == SQLITE_OK){printf("Success to create table!\n");}memset(Sql_statement,0,1024);} } //向表中插入數據 void MySql::InsertData() {strcpy(this->Sql_statement,"insert into student values(1,'zhangsan',20)");sqlite3_exec(db,this->Sql_statement,NULL,NULL,&errMes);strcpy(this->Sql_statement,"insert into student values(2,'lisi',19)");sqlite3_exec(db,this->Sql_statement,NULL,NULL,&errMes);if(rc == SQLITE_OK){printf("Success to insert data!\n");}memset(Sql_statement,0,1024); } //通過id查詢數據 void MySql::SelectData(int id) {const unsigned char *name;int nid = 0;int age = 0;sprintf(this->Sql_statement,"select * from student where id = %d",id);sqlite3_prepare(db,this->Sql_statement,-1,&this->stmt,NULL);while(sqlite3_step(this->stmt) == SQLITE_ROW){nid = sqlite3_column_int(this->stmt, 0);name = sqlite3_column_text(this->stmt, 1);age = sqlite3_column_int(this->stmt, 2);printf("name:%s ,id:%d ,age:%d\n",name,nid,age);} }

main.cpp文件

#include "MySql.h" #include <iostream> using namespace std;int main() {MySql::Instance()->InsertData();MySql::Instance()->SelectData(1);return 0; }

最后把這三個文件放在linux的同一目錄底下,然后通過makefile工具進行編譯。

MakeFile文件

ELF=main CC=g++ src=$(wildcard *.cpp) objects=$(src:.cpp=.o) $(ELF):$(objects)$(CC) $^ -o $@ -lsqlite3 #注意這里記得加-lsqlite3 $(objects): clean:rm -f $(objects) $(ELF)

(不會Makefile的可以看我博客:MakeFile工具使用)

編譯結果:

總結

以上是生活随笔為你收集整理的SQLite3单例模式(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。