国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MFC中使用sqlite3操作數據庫 創建,插入數據,查詢數據

2019-11-08 02:37:39
字體:
來源:轉載
供稿:網友

需要用到的文件有sqlite3.h 、sqlite3.dll、sqlite3.lib。網上很多人分享下載地址這里不再贅述。

將這三個文件拷貝到自己新建MFC項目目錄下,在解決方案窗口下 添加現有項,選擇sqlite3.h 、sqlite3.dll、sqlite3.lib這三個文件,添加到項目中。

然后自己的.cpp中#include “sqlite3.h”

一些宏定義:

#define SQL_CREATE_TABLE "Create table if not exists stu_info(id int PRIMARY KEY ASC, subject char(10), name char(10), mark char(5))"#define SQL_INSERT_DATA "Insert into stu_info (id, subject, name, mark) values (%d, '%s', '%s', '%s')"#define SQL_QUERY_DATA "Select * from stu_info"

以及自定義管理struct

typedef struct _INFO_{CString subject;CString name;CString mark;}Info;

sqlite3 *m_pDB;

1、創建數據庫

int rc;       char * err_msg = NULL;  rc = sqlite3_open("myDatabase.db", &m_pDB);// 打開數據庫,不存在時創建  if (rc)     {  sqlite3_close(m_pDB);  //打開失敗!   MessageBox(_T("數據庫打開失敗,請檢查后再操作!"), NULL, MB_ICONSTOP);  return ;  } if (sqlite3_exec(m_pDB, SQL_CREATE_TABLE, NULL, NULL, &err_msg) != SQLITE_OK)   {   MessageBox(_T("操作失敗,數據庫鏈表生成錯誤!"), NULL, MB_ICONSTOP);  return;   }sqlite3_close(m_pDB);

2、插入數據

int rc;       char * err_msg = NULL;  char sql[256];rc = sqlite3_open("myDatabase.db", &m_pDB);// 打開數據庫,不存在時創建  if (rc)     {  sqlite3_close(m_pDB);  //打開失敗!   MessageBox(_T("數據庫打開失敗,請檢查后再操作!"), NULL, MB_ICONSTOP);  return ;  } sprintf_s(sql, SQL_INSERT_DATA, 1, "java", "John", "3");int exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);  if (exit!=SQLITE_OK){sqlite3_close(m_pDB);return;}sprintf_s(sql, SQL_INSERT_DATA, 2, "C", "Deny", "1");  exit = sqlite3_exec(m_pDB,sql, 0 ,0, &err_msg);  if (exit!=SQLITE_OK){sqlite3_close(m_pDB);return;}sprintf_s(sql, SQL_INSERT_DATA, 3, "C++", "James", "8");exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);  if (exit!=SQLITE_OK){sqlite3_close(m_pDB);return;}sprintf_s(sql, SQL_INSERT_DATA, 4, "C#", "Killy", "5");exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);if (exit!=SQLITE_OK){sqlite3_close(m_pDB);return;}sqlite3_close(m_pDB);  

3、查詢數據,兩種方式都可以實現:

方式1:

int rc;      rc = sqlite3_open("myDatabase.db", &m_pDB);// 打開數據庫,不存在時創建  if (rc)     {  sqlite3_close(m_pDB);  //打開失敗!   MessageBox(_T("數據庫打開失敗,請檢查后再操作!"), NULL, MB_ICONSTOP);  return ;  } CArray<Info> arr;sqlite3_stmt *stmt;rc=sqlite3_prepare_v2(m_pDB, SQL_QUERY_DATA, -1, &stmt, 0);if (rc!=SQLITE_OK){sqlite3_close(m_pDB);return;}rc = sqlite3_step(stmt);while(rc == SQLITE_ROW ){Info info;info.subject = sqlite3_column_text(stmt,1);info.name = sqlite3_column_text(stmt,2);info.mark = sqlite3_column_text(stmt,3);arr.Add(info);rc = sqlite3_step(stmt);}sqlite3_close(m_pDB);

方式2:

int rc;       char * err_msg = NULL;  rc = sqlite3_open("myDatabase.db", &m_pDB);// 打開數據庫,不存在時創建  if (rc)     {  sqlite3_close(m_pDB);  //打開失敗!   MessageBox(_T("數據庫打開失敗,請檢查后再操作!"), NULL, MB_ICONSTOP);  return ;  } int row=0; int colum=0;char **azResult;CArray<Info> arr;rc=sqlite3_get_table(m_pDB,SQL_QUERY_DATA,&azResult,&row,&colum,&err_msg);for (int i=1; i<row+1; i++){Info info;info.subject= *(azResult+i*colum+1);info.name= *(azResult+i*colum+2);info.mark= *(azResult+i*colum+3);arr.Add(info);}sqlite3_free_table(azResult);sqlite3_close(m_pDB);

其他的刪除,更新等操作都是類似的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永宁县| 印江| 枣强县| 桂林市| 清镇市| 施秉县| 依兰县| 伊吾县| 政和县| 岐山县| 仁寿县| 卓尼县| 左云县| 沙雅县| 丹东市| 兴海县| 遂川县| 黄石市| 定结县| 微山县| 三都| 嵩明县| 阳新县| 安塞县| 赣州市| 大新县| 花莲市| 阿拉善右旗| 岳普湖县| 内丘县| 太保市| 涟源市| 福鼎市| 盐亭县| 内江市| 呼图壁县| 五家渠市| 河东区| 威海市| 五寨县| 当雄县|