admin管理员组文章数量:1622629
简介
SQLite3作为一个轻量级数据库引擎,拥有无服务器,无需外部依赖,可夸平台等特性。
将SQLite与项目结合
1,将源码文件
导入到项目代码中:
由于SQLite是开源的,所以大家可以自行前往开源社区下载源码,或者在我的上传资源里下载;
sqlite3.c
sqlite3.h
2,连接数据库
函数:int sqlite3_open(const char *zFilename,sqlite3 **ppDb)
功能:打开SQLite数据库
参数:
zFilename :数据库名称(包含路径)
ppDb :指向sqlite句柄的指针,后面对数据库所有的操作都要依赖这个句柄
返回值:成功返回0,失败返回错误码(非零)
void OpenDB()
{
sqlite3* pSQLite = NULL;
std::string strPath = "SI.db"; //数据库存储路径
int result = sqlite3_open(strPath .c_str(), &pSQLite); // 根据路径打开数据库连接。如果数据库不存在,则创建。
if (result == SQLITE_OK)
{
std::clog << "数据库连接成功"<<endl;
}
else {
std::clog << "数据库连接失败"<<endl;
}
}
3,查询数据库-方法1
函数:int sqlite3_get_table(sqlite3 db, const char sql, charresultp, intnrow, int ncolumn, char* errmsg);
功能:执行SQL操作-- 不使用回调函数
参数: db :数据库句柄 sql :SQL语句
resultp :用来指向sql执行结果的指针
nrow:满足 条件的记录的数目
ncolumn :每条记录包含的字段数目
errmsg :错误信息指针的地址
返回值 :成功返回0,失败返回错误码(非零)
void QueryDB(string strSQL)
{
int iRt = 0; //执行结果,正确返回0,错误返回非零值
char * zErrMsg = NULL; //错误信息指针的地址
char ** pResult = NULL; //用来指向sql执行结果的指针
int nrow = 0; //满足条件的记录数目
int ncolumn = 0; //每条记录包含的字段数据
iRt = sqlite3_get_table(m_pSQLite, strSQL.c_str(), &pResult, &nrow, &ncolumn, &zErrMsg);
if (iRt != SQLITE_OK)
{
printf("执行sql语句失败\n");
return -1;
}
int iIndex = ncolumn;
for (int i = 0; i < nrow; i++)
{
for (int j = 0; j < ncolumn; j++)
{
printf("%-8s : %-8s\n", pResult[j], pResult[iIndex]);//第j行,第iIndex列数据;
iIndex++;
}
printf("***************************\n");
}
sqlite3_free_table(pResult); //释放查询结果指针
}
4,查询数据库-方法2
函数:int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *, char **errmsg);
功能:执行SQL操作 –使用回调函数
参数:
db :数据库句柄
sql :SQL语句,就是我们前面两章用于操作表的增删改查语句
callback:回调函数,每返回一条记录,则调用一次回调函数
errmsg :错误信息指针的地址 返回值:成功返回0,失败返回错误码
返回值:成功返回0,失败返回错误码
//回调函数
int callback(void *para, int f_num, char **f_val, char **f_name)
{
for (int i = 0; i < f_num; i++)
{
printf("%-8s", f_val[i]);
}
printf("\n");
return 0;
}
void QueryDB_1(string strSQL)
{
int iRt = 0; //执行结果,正确返回0,错误返回非零值
char * zErrMsg = NULL; //错误信息指针的地址
char ** pResult = NULL; //用来指向sql执行结果的指针
int nrow = 0; //满足条件的记录数目
int ncolumn = 0; //每条记录包含的字段数据
iRt = sqlite3_exec(m_pSQLite, strSQL.c_str(), &callback, NULL, &zErrMsg);
if (iRt != SQLITE_OK)
{
printf("执行sql语句失败\n");
}
printf("执行sql语句成功\n");
}
5,断开数据库连接
函数:int sqlite3_close(sqlite3 *db)
功能:执行SQL操作 –使用回调函数
参数:
db :数据库句柄
返回值:成功返回0,失败返回错误码
void CloseDB()
{
int iRt = sqlite3_close(m_pSQLite);
if(iRt != SQLITE_OK)
{
printf("数据库连接断开失败\n");
}
printf("数据库连接断开成功\n");
}
版权声明:本文标题:【数据库】二、SQLite3数据库连接查询(c++篇) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726554907a1075415.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论