【sqlite的C语言访问接口】执行SQL语句的接口------sqlite3_exec回调函数的使用

简介: 【sqlite的C语言访问接口】执行SQL语句的接口------sqlite3_exec回调函数的使用

sqlite3_exec的函数原型

int sqlite3_exec(
sqlite3 *pDb,
const char *sql,
int (*callback)(void *arg, int col, char **str, char **name),
void *arg,
char **errmsg
)


参数说明:

pDb:打开数据库的句柄

sql:要执行的SQL语句

callback:回调函数,处理SQL语句执行的结果(查询操作)

一条结果调用一次该回调函数。(注:回调函数必须返回SQLITE_OK)

arg:exec的第四个参数

col:本条结果的字段数

str:记录字段值的数组

name:记录字段名的数组

arg:传递给回调函数的第一个参数

errmsg:错误信息


返回值

成功返回SQLITE_OK,否则打开失败

例子

#include <stdio.h>
#include "sqlite3.h"

//查询的回调函数
int sql_callback(void *arg,int col,char **str,char **name)
{
  int i;
  for(i=0;i<col;i++){
    printf("%s:%s ",name[i],str[i]);
  }
  printf("\n");
  
  //返回SQLITE_OK表示执行成功
  return SQLITE_OK;
}

int main()
{
  sqlite3 *pDb =  NULL;
  //1.打开数据库
  int res = sqlite3_open("./test.db",&pDb);
  if(res!=SQLITE_OK){
    printf("数据库打开失败!\n");
    return -1;
  }
  printf("数据库打开成功!\n");
  
  int id = 0;
  char sql[128] = {};
  printf("请输入要查找的id:");
  scanf("%d",&id);
  sprintf(sql,"select * from mytbl where id=%d;",id);
  
  //构建SQL语句
  //const char *sql = "create table if not exists mytbl(id int unique,name ntext,age int);";//建表
  //const char *sql = "insert into mytbl values(1,'宋江',36);";//插入
  //const char *sql = "insert into mytbl values(2,'李逵',24);";//插入
  //const char *sql = "insert into mytbl values(3,'潘金莲',21);";//插入
  //const char *sql = "select * from mytbl;";//查询
  
  
  //2.执行SQL语句
  res = sqlite3_exec(pDb,sql,sql_callback,NULL,NULL);
  if(res!=SQLITE_OK){
    printf("sql语句执行失败!\n");
    return -1;
  }
  printf("sql语句执行成功!\n");
  
  //3.关闭数据库
  sqlite3_close(pDb);
  return 0;
}


相关文章
|
21天前
|
SQL 关系型数据库 数据库
nacos 2.2.3版本 查看配置文件的历史版本的接口 是针对MySQL数据库的sql 改成postgresql后 sql语句报错 该怎么解决
在Nacos 2.2.3中切换到PostgreSQL后,执行配置文件历史版本分页查询出错,因`LIMIT 0, 10`语法不被PostgreSQL支持,需改为`LIMIT 10 OFFSET 0`。仅当存在历史版本时报错。解决方案是调整查询SQL以兼容PostgreSQL语法。
|
22天前
|
SQL 安全 数据库连接
sql如何访问网络数据库
访问网络数据库(通常指的是不在本地计算机上而是在网络上的数据库服务器)的SQL操作,其实与访问本地数据库在SQL语句的编写上并没有太大差异。主要的区别在于连接的设置和配置,以及如何确保网络连接的安全性
|
30天前
|
SQL
【MybatisPlus】条件构造器、自定义SQL、Service接口
【MybatisPlus】条件构造器、自定义SQL、Service接口
37 0
【MybatisPlus】条件构造器、自定义SQL、Service接口
|
28天前
|
安全 Linux 编译器
从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)(下)
从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)
24 0
|
28天前
|
安全 C语言 C++
从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)(中)
从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)
26 0
|
28天前
|
Linux 调度 C语言
从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)(上)
从C语言到C++_40(多线程相关)C++线程接口+线程安全问题加锁(shared_ptr+STL+单例)
27 0
|
29天前
|
存储 算法 C语言
从C语言到C++_16(list的介绍和常用接口函数)
从C语言到C++_16(list的介绍和常用接口函数)
16 0
|
30天前
|
C语言
C语言——详解回调函数
C语言——详解回调函数
18 0
|
1天前
|
算法 C语言
【C语言】:atoi函数的使用及其模拟实现
【C语言】:atoi函数的使用及其模拟实现
10 5