在Linux下用C语言操作数据库sqlite3(查询)

linux下sqlite3在c语言中应用实例 /* ************************************************************************** * File Name: 1.sqlite3.c * Description : 1)数据插入,删除,清空 * 2) * Author : Xubing * Created Time: 2016年10月3 阅读详情
查询: SELETE

  好了,我们知道了怎么调用 sqlite3 的C/C++的API函数接口去创建数据库、创建表格、并插入数据,

  下面我们看看怎么在C语言中查询数据库中的数据。

  好的,我们现编辑一段c代码,取名为 query.c

// name: query.c
// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
// Author : zieckey All rights reserved.
// data : 2006/11/18
#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
#define _DEBUG_
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("zieckey.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
if( rc )
{
fprintf(stderr, "Can't open database: %s
", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}

else printf("You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
");
//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中
char *sql = " CREATE TABLE SensorData(
ID INTEGER PRIMARY KEY,
SensorID INTEGER,
SiteNum INTEGER,
Time VARCHAR(12),
SensorParameter REAL
);" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
#ifdef _DEBUG_
printf("zErrMsg = %s
", zErrMsg);
#endif
//插入数据
sql = "INSERT INTO "SensorData" VALUES(NULL , 1 , 1 , '200605011206', 18.9 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
sql = "INSERT INTO "SensorData" VALUES(NULL , 1 , 1 , '200605011306', 16.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
int nrow = 0, ncolumn = 0;
char **azResult; //二维数组存放结果
//查询数据

sql = "SELECT * FROM SensorData ";
sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
int i = 0 ;
printf( "row:%d column=%d
" , nrow , ncolumn );
printf( "
The result of querying is :
" );
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s
", i , azResult[i] );
//释放掉 azResult 的内存空间
sqlite3_free_table( azResult );
#ifdef _DEBUG_
printf("zErrMsg = %s
", zErrMsg);
#endif
sqlite3_close(db); //关闭数据库
return 0;
}

  我们这里用到了一个查询的语句是 "SELECT * FROM SensorData " ,

  在C语言中对应的函数接口是 sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );

 这个函数接口的解释在程序中已经注释。

  下面我们编译运行下看看,

  [root@localhost temp]# export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH

  [root@localhost temp]# gcc query.c -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include

  query.c:29:21: warning: multi-line string literals are deprecated

  [root@localhost temp]# ./a.out

  You have opened a sqlite3 database named zieckey.db successfully!

  Congratulations! Have fun ! ^-^

  zErrMsg = (null)

  row:2 column=5

  The result of querying is :

  azResult[0] = ID

  azResult[1] = SensorID

  azResult[2] = SiteNum

  azResult[3] = Time

  azResult[4] = SensorParameter

  azResult[5] = 1

  azResult[6] = 1

  azResult[7] = 1

  azResult[8] = 200605011206

  azResult[9] = 18.9

  azResult[10] = 2

  azResult[11] = 1

  azResult[12] = 1

  azResult[13] = 200605011306

  azResult[14] = 16.4

  zErrMsg = (null)

  这里我们可以看到,azResult 的前面 5 个数据正好是我们的表 SensorData 的列属性,

  之后才是我们要查询的数据。所以我们的程序中才有 i<( nrow + 1 ) * ncolumn 的判断条件:

  for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )

  printf( "azResult[%d] = %s ", i , azResult[i] );

  输出中有 zErrMsg = (null) 这样的字句,这是 zErrMsg 保留的错误信息,

  正如你所看到的,zErrMsg 为空,表明在执行过程中没有错误信息。

linux下C语言编程操作数据库 sqlite3 阅读详情

相关推荐

【Linux网络编程】SQLite3 数据库编程

SQLite3并没有提供man手册版的API文档,但是官网有API文档。 安装sudo apt-get install sqlite3 sudo apt-get install libsqlite3-dev在Shell中使用创建数据库文件sqlite3 db_name.db显示所有命令.help退出sqlite3.quit显示当前打开的数据库文件.database显示数据库中所有表名.tables

colorfulshark 830

linux下sqlite数据库用c语言sqlite3_get_table查询数据

#include #include #include /* 使用sqlite3_get_table获取数据 */ int main(void) { sqlite3 *conn;/*句柄*/ if(sqlite3_open("ku1.db",&conn)!=SQLITE_OK) { printf("打开失败%s\n",sqlite3_errmsg(c

HES_C的博客 2307

c语言数据库查询系统-C语言实现sqlite3数据库查询的基本方法.pdf

c语⾔数据库查询系统,C语⾔实现sqlite3数据库查询的基本⽅ 法 sqlite回传函数相关 说了3种基本⽅法:callback,gettable和预处理stmt⽅法 下⾯给出测试代码和测试⽤数据库,代码如下 #include #include #include #include "sqlite3.h" // //typedef int (*sqlite3_callback)( // void* data, /* Data provided in the 4th argument of sqlite3_exec() */ // int ncols, /* The number of columns in row */ // char** values, /* An array of strings representing fields in the row */ // char** headers /* An array of strings representing column names */ //); int callback(void* data, int ncols, char** values, char** headers) { int i; int len =0; int ll=0; for(i=0; i < ncols; i++) { if(strlen(headers[i])>len) len = strlen(headers[i]); } for(i=0; i < ncols; i++) { ll = len-strlen(headers[i]); while(ll) { fprintf(stdout," "); --ll; } fprintf(stdout, "%s: %sn", headers[i], values[i]); } fprintf(stdout, "n"); return 0; } int search_by_callback(const char* db_name, const char* sql_cmd) { int i = 0 ; int j = 0 ; int nrow = 0, ncolumn = 0; char **azResult; //⼆维数组存放结果 sqlite3 *db=NULL; char *zErrMsg = 0; int rc; int len=0; if(access(db_name, 0) == -1) { fprintf(stderr, "%s not foundn", db_name); return -1; } rc = sqlite3_open(db_name, &db); if( rc != SQLITE_OK) { fprintf(stderr, "%s open failed: %sn", db_name,sqlite3_errmsg(db)); sqlite3_close(db); return -1; } //查询数据 rc = sqlite3_exec( db,sql_cmd, callback, NULL, &zErrMsg ); if( rc != SQLITE_OK) { fprintf(stderr, "%s %s: %sn", db_name,sql_cmd, sqlite3_errmsg(db)); if(zErrMsg) { fprintf(stderr,"ErrMsg = %s n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); return -1; } if(zErrMsg) { sqlite3_free(zErrMsg); } //关闭数据库 sqlite3_close(db); return 0; } int search_by_table(const char* db_name, const char* sql_cmd) { int i = 0 ; int j = 0 ; int nrow = 0, ncolumn = 0; char **azResult; //⼆维数组存放结果 sqlite3 *db=NULL; char *zErrMsg = 0; int rc; int len=0; if(access(db_name, 0) == -1) { fprintf(stderr, "%s not foundn", db_name); return -1; } rc = sqlite3_open(db_name, &db); if( rc != SQLITE_OK) { fprintf(stderr, "%s open failed: %sn"

浅显易懂 SQLite3 笔记(04)— SQL数据更新(增加、删除、修改)

本篇,我们将学习如何使用SQL语句进行数据更新(增加、删除、修改)。

孤生i的博客 6793

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

树莓派5使用CSI摄像头 | 树莓派5接上CSI摄像头后命令行操作显示检测无设备

此系列用于记录树莓派5的一些操作,这篇文章讲述树莓派5如何使用CSI摄像头。

beyourself_he的博客 8795

【基于sqlite3库源码实现增删改查 linux_C语言】

【代码】【基于sqlite3库源码实现增删改查 linux_C语言】

a812417530的博客 659

疾病负担研究(GBD)介绍

今天我们来聊一聊第一个公共数据库——GBD数据库,全称叫做global burden of disease(全球疾病负担),该数据库每年都会更新,目前已经更新到GBD2019。 这里直接给大家贴出网址:Global Burden of Disease Study 2019 (GBD 2019) Data Resources | GHDx 上图中红色圈圈标识的就是数据库的数据获取界面的链接,大家直接点击即可. 数据的检索十分方便: Context下拉菜单中可以选择不同的选项,默认是caus

weixin_44240228的博客 1万+

关于Sqlite数据库Update语句的一点介绍

sqlite数据库不支持update……from语句,但可以用两种不同的方法来替代它,本文主要介绍了这一过程,接下来就让我们一起学习吧。 AD: Sqlite数据库中的Update语句,你能了解多少呢?因为这种微型数据库用到的语句非常少,所以可能我们不会经常的用到。但要想真正的玩转sqlite这种微型数据库,掌握这些语句的用法是非常重要的。本文我们就来介绍一下update

maqiutian的专栏 3万+

告别信息过载:我是如何用Feedly RSS阅读器打造个人专属信息流的(附Chrome插件使用技巧)

本文分享了如何利用Feedly RSS阅读器有效管理信息过载,打造个人专属信息流的方法。通过科学组织订阅源、智能过滤和跨平台同步技巧,帮助用户从被动接收转为主动筛选,提升信息获取效率。特别推荐使用Feedly的Chrome插件和AI过滤功能,实现高效的信息管理。

weixin_42526015的博客 354

Python实战:基于PyG和Stable-Baselines3复现柔性车间调度算法(附数据集)

本文提供了一份基于图神经网络与深度强化学习的柔性车间调度实战指南。通过PyTorch Geometric构建异构图表示车间状态,并利用Stable-Baselines3中的PPO算法训练调度智能体,详细介绍了从环境建模、网络设计到训练评估的完整代码实现,帮助开发者构建可复用的工业级智能调度系统。

ansible6ops的博客 607

sqlite3_exec函数

函数的作用:执行sql语句,将结果传给回调函数。void *arg 第四个参数传给回调函数。char * 函数执行的结果的值。int 函数结果的个数。char ** 错误码。

m0_45279933的博客 2417

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中 在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

mjmmm的博客 1万+

SQLite3的简单使用

本文展示了在linux中使用sqlite3的API接口实现数据库增删改查的学生信息管理系统

weixin_51115390的博客 1306

inferCNV包安装问题及解决办法

InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:

m0_51042606的博客 6803

基于Simulink的永磁同步电机三闭环(位置/速度/电流)伺服仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环伺服控制系统的设计与实现,针对机器人关节控制场景。系统采用位置环(外环)、速度环(中环)和电流环(内环)的嵌套结构,通过精确的带宽匹配(电流环1kHz、速度环200Hz、位置环20Hz)实现亚微米级位置跟踪。文中提供了完整的Simulink建模步骤,包括主电路搭建、三环PI控制器实现及坐标变换模块,并验证了系统性能:阶跃响应时间35ms,位置误差<0.05°,正弦跟踪误差<0.15°,负载突加恢复时间0.08s。最后提出了参数自适应整定、前馈

amy_mhd的博客 279

易语言linux连接数据库,[转载]在Linux下用C语言操作数据库sqlite3(查询)

查询: SELETE好了,我们知道了怎么调用 sqlite3 的C/C++的API函数接口去创建数据库、创建表格、并插入数据,下面我们看看怎么在C语言中查询数据库中的数据。好的,我们现编辑一段c代码,取名为 query.c// name: query.c// This prog is used to test C/C++ API for sqlite3 .It is verysimple,ha !...

weixin_36283702的博客 347

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Linux c 开发-18 Ubuntu20.03 使用sqlite3

1、查找sqlite3库 sudo apt-cache search sqlite3 2、安装Sqlite3 sudo apt-get install sqlite3 sudo apt-get install libsqlite3-dev 第一个是命令行工具,第二个不安装会提示无法找到sqlite3头文件 3、创建一个数据库test.db,编写一个简单代码 #include &l...

zhaogaojian的专栏 61

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Linux系统下SQLite3使用教程(二)

通过本文,你学会了如何在 Linux 下使用 C 语言与 SQLite3 进行交互,完成增删改查操作。SQLite3 是一个非常轻量级的数据库,适合嵌入式系统或小型项目。如果你对数据库操作有更高的需求,可以进一步学习 SQLite3 的高级功能,例如事务处理、索引优化等。

Ly001_的博客 838

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

linux C语言 数据库sqlite3的添加,删除,查看

inux下数据库sqlite3的添加,删除,查看。 这个程序需要先在命令下创建表。 程序: #include #include #include static sqlite3 *db = NULL; static char *errmsg = NULL; char ** result = NULL; int num = 0; int display(voi

qq_34528825的博客 800

Linux下c语言编程操作sqlite3数据库

Linux下c语言编程操作sqlite3数据库 1. 安装数据库 我们从sqlite官网下载页面,https://www.sqlite.org/download.html从源代码区下载 sqlite-autoconf-*.tar.gz。 然后在Linux下安装sqlite3 liguangming@ubuntu-14:~/sqlite$ wget https://www.sqlite.org/2021/sqlite-autoconf-3350500.tar.gz liguangming@ubuntu-14:

lgm5201314woc的博客 638

Linux下Sqlite3数据库操作

使用SQLite的API函数实现新建一个数据库student.db,并且在数据库中创建表demo,想表中插入数据,查询插入的数据,最后关闭数据库。可以发现 --prefix 这个选项可以用来指定安装路径,否则他将默认安装到 /usr/local。第一步:创建一个.c文件sudo touch sqlite_Demo01.c。打开.c文件编写代码:sudo gedit sqlite_Demo01.c。了解一下configure。命令进入命令行操作模式。

tqupohei的博客 2954

linux下C语言编程操作数据库(sqlite3)

前言:C语言中通过调用 sqlite 的函数接口来实现对数据库的管理(创建数据库、创建表格、插入数据、查询、数据、删除数据等),掌握sqlite数据库的语法,以及sqlite提供的函数接口,那么在linux下C语言编程操作数据库就变得简单了。 Centos系统一般默认是没有安装sqlite3数据库的,所以我们要到其官网下载,我下载的版本是sqlite-3.6.16.tar.gz [zoulei@CentOS sqlite]$ wget http://www.sqlite.org...

yuranhzw123的博客 854

如何在Linux下用C/C++语言操作数据库sqlite3

如何在Linux下用C/C++语言操作数据库sqlite3 0. 引言   我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理,   包括创建数据库、创建表格、插入数据、查询数据、删除数据等。   1. 说明   这里我们假设你已经编译好了sqlite的库文件 :   libsqlite3.a libsqlite3.la libsqlit

zhangshan415的专栏 2007

基于C语言的SQlite3数据库操作指令

SQLite3是一个轻量级的嵌入式数据库引擎,它是一个自包含的、零配置的、服务器无关的、事务性的SQL数据库引擎。它是使用C语言编写的,可以直接在应用程序中嵌入,不需要单独的服务器进程。

qq_66337990的博客 1807
上一篇: SQLITE3,C语言使用
下一篇: 多进程实现linux 下即时聊天软件
zhouxf_cn
博客等级 码龄14年 54粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值