加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用 sqllite 小结

发布时间:2020-12-12 19:47:55 所属栏目:百科 来源:网络整理
导读:1 去官网下载:http://www3.sqlite.org/download.html 2 创建数据库和表 :http://www3.sqlite.org/cli.html ,linux 和 windows 环境是不一样的 3 示例代码http://www3.sqlite.org/quickstart.html 一个简单的 C++ 操作类 CSqlite .h #pragma once #include

1 去官网下载:http://www3.sqlite.org/download.html

2 创建数据库和表 :http://www3.sqlite.org/cli.html ,linux 和 windows 环境是不一样的

3 示例代码http://www3.sqlite.org/quickstart.html


一个简单的 C++ 操作类CSqlite.h

#pragma once

#include "sqlite3.h"

class CSqlite

{

public:

CSqlite(void);

virtual ~CSqlite(void);

friend int CallBack(void *lpParameter,int argc,char **argv,char **azColName);

int SqliteOpen(string strFile);

bool ExecuteQuery(string strQuery);

bool ExecuteCmd(string strCmd);

bool GetQueryData(vector<string> &vecColName,vector<vector<string> > &vecData);

bool GetQueryData(vector<string> &vecColName,vector<string> &vecData);

void Close();

private:

sqlite3 *m_pDB;

vector<vector<string> > m_vecData;

vector<string> m_vecCol;

};

CSqlite.cpp

#include "StdAfx.h"

#include "Sqlite.h"

CSqlite::CSqlite(void)

m_pDB = NULL;

}

CSqlite::~CSqlite(void)

Close();

int CSqlite::SqliteOpen(string strFile)

return SQLITE_OK ==sqlite3_open(strFile.c_str(),&m_pDB);

int CallBack(void *lpParameter,char **azColName)

CSqlite *pSqlite = (CSqlite *)lpParameter;

if (NULL == pSqlite)

return 0;

vector<string> vecData;

for (int i = 0;i < argc;i++)

{

if (argv[i])

vecData.push_back(argv[i]);

}

else

vecData.push_back(" ");

if (vecData.size() > 0)

pSqlite->m_vecData.push_back(vecData);

set<string> setCol;

setCol.insert(pSqlite->m_vecCol.begin(),pSqlite->m_vecCol.end());

for (int j = 0;j < argc;j++)

if (azColName[j]

&& setCol.find(azColName[j]) == setCol.end()

)

pSqlite->m_vecCol.push_back(azColName[j]);

bool CSqlite::ExecuteQuery(string strQuery)

if (NULL == m_pDB)

return false;

m_vecData.clear();

m_vecCol.clear();

char *zErrMsg = 0;

int iRet = sqlite3_exec(m_pDB,strQuery.c_str(),CallBack,this,&zErrMsg);

if( iRet != SQLITE_OK ){

// 输出错误信息

sqlite3_free(zErrMsg);

return iRet == SQLITE_OK;

bool CSqlite::ExecuteCmd(string strCmd)

sqlite3_free(zErrMsg);

bool CSqlite::GetQueryData(vector<string> &vecColName,vector<vector<string> > &vecData)

vector<int> vecIndex;

for (int i = 0;i < (int)vecColName.size();i++)

for (int j = 0;j < (int)m_vecCol.size();j++)

if (_stricmp(vecColName.at(i).c_str(),m_vecCol.at(j).c_str()) == 0)

vecIndex.push_back(j);

break;

for (int i = 0; i < (int)m_vecData.size();i++)

vector<string> vecTemp;

vector<string> vecItem = m_vecData[i];

for (int j = 0;j < (int)vecIndex.size();j++)

int iIndx = vecIndex[j];

if (iIndx < (int)vecItem.size())

vecTemp.push_back(vecItem[iIndx]);

if (vecTemp.size() == vecIndex.size())

vecData.push_back(vecTemp);

return true;

// 索引

if (m_iCurIndex >= (int)m_vecData.size())

m_iCurIndex = 0;

if (_stricmp(vecColName.at(i).c_str(),arial; font-size:14px; line-height:21px"> }

vecData.clear();

vector<string> vecItem = m_vecData[m_iCurIndex];

{

vecData.push_back(vecItem[iIndx]);

m_iCurIndex++;

return true;

void CSqlite::Close()

if (NULL != m_pDB)

sqlite3_close(m_pDB);

m_pDB = NULL;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读