使用 sqllite 小结
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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |