国产探花免费观看_亚洲丰满少妇自慰呻吟_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);

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴旗县| 深水埗区| 壶关县| 台州市| 渭南市| 大竹县| 广饶县| 富裕县| 平南县| 遵义市| 自治县| 东海县| 七台河市| 会泽县| 巧家县| 永丰县| 朔州市| 安陆市| 天等县| 乌拉特前旗| 改则县| 河源市| 诸暨市| 湖南省| 安溪县| 高邑县| 黑山县| 黔西县| 资中县| 儋州市| 札达县| 阳春市| 莆田市| 阳谷县| 定襄县| 慈利县| 城市| 陕西省| 湟中县| 昔阳县| 盐山县|