sqlite3_stmt 机制

简介: 销毁sqlite3_stmt对象,使用sqlite3_finalize()函数,一般是循环操作完成后,销毁。

功能函数如下:


(1)创建sqlite3_stmt对象,使用 sqlite3_prepare_v2();


(2)绑定参数值到sqlite3_stmt独享,使用sqlite3_bind_*();


(3)运行sql语句,使用sqlite3_step(),可以是一次,也可以是循环执行。


(4)重置(reset)sqlite3_stmt对象,使用sqlite3_reset(), 然后回退到步骤2,重新赋值。


(5)销毁sqlite3_stmt对象,使用sqlite3_finalize()函数,一般是循环操作完成后,销毁。


程序例程:


#include <sqlite3.h>
#include <string.h>
void
main()
{
  sqlite3* conn = NULL;
  int i,nCol;
  char *name = "tag";
  char *zErrMsg;
  const char *pzTail;
  /* open */
  int result = sqlite3_open("test.db", &conn);
  if(result != SQLITE_OK){
    sqlite3_close(conn);
    return ;
  }
  const char* createTableSQL = 
    "CREATE TABLE TESTTABLE(int_col INT, float_col REAL, string_col TEXT)";
  /* create prepare object*/
  if(sqlite3_exec(conn, createTableSQL, NULL, NULL, &zErrMsg) != SQLITE_OK){
    printf("%s\n", zErrMsg);
    sqlite3_close(conn);
    return 1;
  }
  sql = "INSERT INTO TESTTABLE(int_col, float_col, string_col) VALUES(?,?,?);";
  sqlite3_stmt* stmt = NULL;
  sqlite3_prepare_v2(conn, sql, strlen(sql), &stmt, &pzTail);
  /* loop cycle */
  for (int i = 0; i < 10; i++)
  {
    nCol = 1;
    sqlite3_bind_int(stmt, nCol++, i);
    sqlite3_bind_double(stmt, nCol++, (float)(i*1.0));
    sqlite3_bind_text(stmt, nCol++, name, strlen(name));
    sqlite3_step(stmt);
    sqlite3_reset(stmt);
  }
  /*destory stmt */
  sqlite3_finalize(stmt);
  return 1;
}


如果只是单条命令,那么 使用sqlite3_exec和sqlite3_stmt效率是一样的,但是在涉及到批量操作时,推荐使用sqlite3_stmt机制

相关文章
|
存储 SQL 分布式计算
Zookeeper详解(从安装—入门—使用)
Zookeeper是一个分布式的、开源的应用程序的协调服务,本文将一步步带领大家从安装zookeeper,到入门zookeeper,了解zookeeper的基本知识,Java客户端操作等
1436 1
Zookeeper详解(从安装—入门—使用)
|
9月前
|
C++
基于C++的简易文件管理系统设计与实现
基于C++的简易文件管理系统设计与实现
319 6
|
6月前
|
监控 开发工具 数据安全/隐私保护
Windows平台如何实现多路RTSP|RTMP流合成后录像或转发RTMP服务
本文介绍了在Windows平台上实现多路RTSP/RTMP视频流的合并技术。主要应用场景包括驾考、全景摄像头以及多路会议录制等。技术实现上,文章详细展示了如何使用特定的SDK来解码并回调YUV或RGB数据,再将这些数据按照图层形式进行合成。示例代码中给出了初始化参数、设置视频帧回调函数、以及如何配置不同图层的具体步骤。最终,合成后的视频可以推送到RTMP服务器、注入到本地RTSP服务,或是直接录制为MP4文件。此外,还提供了添加实时文字水印的方法,并展示了四路视频流合成后的“四宫格”效果。
174 0
|
7月前
|
机器学习/深度学习 数据采集 算法
Python实现SSA智能麻雀搜索算法优化支持向量机回归模型(SVR算法)项目实战
Python实现SSA智能麻雀搜索算法优化支持向量机回归模型(SVR算法)项目实战
|
9月前
|
人工智能
LangChain:1. Prompt基本使用
LangChain:1. Prompt基本使用
257 1
|
开发者 C++ 数据库管理
SQLite3源码下载与编译(开发环境:Win10+VS2022)
SQLite3源码下载与编译(开发环境:Win10+VS2022)
1548 0
|
存储 缓存 IDE
Android Studio 3.1.3 Gradle同步错误无法下载Gradle-Core.jar
Android Studio 3.1.3 Gradle同步错误无法下载Gradle-Core.jar
815 0
|
Linux
一文搞懂select、poll和epoll区别
一文搞懂select、poll和epoll区别
892 1
一文搞懂select、poll和epoll区别
|
NoSQL MongoDB
使用net start mongoDB启动出现 “发生系统错误5、拒绝访问”
使用net start mongoDB启动出现 “发生系统错误5、拒绝访问”
|
设计模式 缓存 算法
带你手撸一个Kotlin版的EventBus
EventBus的优点有很多(现在来看也并不是优点):代码简洁,是一种发布订阅设计模式(观察者设计模式),简化了组件之间的通讯,分离了事件的发送者和接收者,而且可以随意切换线程,避免了复杂的和易错的依赖关系和生命周期问题
385 0
带你手撸一个Kotlin版的EventBus

热门文章

最新文章