[代码实例][C语言][sqlite3]用SQL语句查询数据库的实例

C语言实现中文模糊查询 在中文字符串中,我们可以使用汉字的拼音或者拼音首字母来进行比较。为了实现这个功能,我们需要一个将中文字符转换为拼音首字母的函数。中文模糊查询是一种常见的操作,它允许我们在一组中文字符串中查找与给定模式相似的字符串。接下来,我们需要实现中文模糊查询的函数。该函数将接受一个模式字符串和一个字符串数组作为输入,然后在数组中查找与模式相似的字符串,并返回结果。函数,它接受一个中文字符作为参数,并返回对应的拼音首字母。这只是一个简单的示例,你可以根据实际需求进行更复杂的模糊查询实现。函数中,我们可以使用前面实现的。 阅读详情

下载sqlite3源代码


https://www.sqlite.org/

编译安装sqlite3的Makefile


INSTALL_PATH    =/usr/local

all: install

libsqlite3.so: sqlite3.c sqlite3.h
    gcc -shared -fPIC $< -o $@

install_lib: libsqlite3.so install_headers
    cp libsqlite3.so $(INSTALL_PATH)/lib
    ldconfig $(INSTALL_PATH)/lib

install_headers: sqlite3.h sqlite3ext.h
    cp $^ $(INSTALL_PATH)/include/

sqlite3: install_lib shell.c
    $(CC) shell.c -o $@ -lsqlite3 -lpthread -ldl

install_shell: sqlite3
    cp $^ $(INSTALL_PATH)/bin

install: install_lib install_shell

uninstall:
    rm -f \
        $(INSTALL_PATH)/lib/libsqlite3.so \
        $(INSTALL_PATH)/include/sqlite3.h \
        $(INSTALL_PATH)/include/sqlite3ext.h \
        $(INSTALL_PATH)/bin/sqlite3

clean:
    rm -f *.so sqlite3

.PHONY: install install_lib install_headers install_shell clean

客户端程序


/*
 * main.c
 */
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

static int callback(void * not_used, int argc, char * argv[], char * col_names[]);

int main(int argc, char * argv[])
{
    sqlite3 * db = NULL;
    char * zErrMsg = NULL;

    if(argc != 3)
    {
        fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
        return EXIT_FAILURE;
    }

    if(sqlite3_open(argv[1], &db) != SQLITE_OK)
    {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return EXIT_FAILURE;
    }

    if(sqlite3_exec(db, argv[2], callback, NULL, &zErrMsg) != SQLITE_OK)
    {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }

    sqlite3_close(db);

    return EXIT_SUCCESS;
}

static int callback(void * not_used, int argc, char * argv[], char * col_names[])
{
    for(int i; i < argc; i++)
        printf("%s = %s\n", col_names[i], argv[i] ? argv[i] : "NULL");
    printf("\n");
    return 0;
}

编译客户端程序的Makefile


all: main

main: main.c
    gcc main.c -o main -lsqlite3 -lpthread -ldl

clean:
    rm -r main

.PHONY: clean

数据库脚本文件


/*
 * test.sql
 */

DROP TABLE main.user;
CREATE TABLE main.user(
   Name TEXT,
   Age INTEGER
);

INSERT INTO user VALUES('Huo Yun', 27);
INSERT INTO user VALUES('Gao Jingzhuo', 30);
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" 立即下载

相关推荐

E-Prime脑电实验打mark全攻略:从端口查询到串并口实战(附常见问题解决)

本文提供了E-Prime脑电实验打mark的完整实战指南,涵盖端口查询、并口与串口配置的核心步骤及常见问题解决。文章深入解析了mark原理,并详细介绍了通过E-Basic脚本和Serial设备对象发送信号的两种方法,帮助研究者实现E-Prime与脑电设备的高精度时间同步,确保实验数据可靠性。

4k5l6j7h8的博客 354

IOS开发数据库篇—SQLite模糊查询

IOS开发数据库篇—SQLite模糊查询 一、示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 // 03-模糊查询 4 // 5 // Created by apple on 14-7-27. 6 // Copyright (c) 2014年 w...

weixin_34319817的博客 448

ModusToolbox 实战避坑指南|从环境配置到项目构建

本文是一份详尽的ModusToolbox实战避坑指南,手把手教你从环境配置到项目构建。重点解决了Windows系统下的安装、关键环境变量CY_TOOLS_PATHS的设置、PowerShell执行策略调整以及利用URL Modifier工具优化GitHub资源下载等核心难题,旨在帮助开发者,特别是英飞凌(Infineon)芯片用户,顺利搭建开发环境并成功运行第一个Hello World程序。

t1u2v的博客 591

C语言实现sqlite3数据库查询的基本方法

sqlite回传函数相关 说了3种基本方法:callback,gettable和预处理stmt方法 下面给出测试代码和测试用数据库,代码如下 #include #include #include #include "sqlite3.h" // //typedef int (*sqlite3_callback)( // void* data, /

handyhuang的专栏 1万+

Greenplum基础

CREATE DATABASE 是 SQL 命令,用于创建一个新的数据库。name 是你要创建的数据库的名称。这个名称是必须的,并且在同一个数据库服务器上必须是唯一的。可选项,OWNER 指定了新数据库的所有者,如果未指定,新数据库的所有者默认是执行该命令的用户。dbowner 是数据库所有者的用户名。可选项,TEMPLATE 指定了用于创建新数据库的模板。在 PostgreSQL 和 GreenPlum 中,通常有一个名为 template1 的默认模板。如果不指定,就会使用这个默认模板。

m0_57697768的博客 1206

泛微E9与金蝶云星空单点登录集成实战指南

本文详细介绍了泛微E9与金蝶云星空单点登录(SSO)集成的实战指南,包括前期准备、核心代码实现、常见问题排查及安全加固建议。通过集成,企业可实现一次登录全网通行,显著提升工作效率和安全性。文章特别强调了签名生成机制和跳转URL构造的关键技巧,帮助开发者避免常见错误。

weixin_30689307的博客 534

数据库sqlite3的入门基础操作【python实现】

结构化查询语言**(**Structured Query Language,SQL**)是用于和数据库交互的语言,SQL是由语句组成的,这些语句告诉数据库你想要做什么,以及想要操作什么数据。然后,数据库取出数据,做你想要做的事情,要么保存你所请求的修改,要么给你相应数据。......

qq_53273581的博客 3785

帆软js--获取控件和单元格

参数面板: 获取面板控件 ,name为控件名称:_g().parameterEl.getWidgetByName("name") 取值:_g().parameterEl.getWidgetByName("tt3").getValue()2323 赋值:_g().parameterEl.getWidgetByName("tt2").setValue("987") 调用对应的事件比...

江湖行骗老中医 7197

《C 语言操作 SQLite3 数据库实践:从打开到查询》

1. 关键搜索词:在浏览器/搜索引擎中输入 SQLite3 C 语言编程 教程 SQLite3 C API 文档,能找到官方文档(https://www.sqlite.org/c3ref/intro.html )、中文教程(如菜鸟教程、优快云 博客),快速了解核心 API(sqlite3_open 打开数据库、sqlite3_prepare_v2 准备语句、sqlite3_step 执行、sqlite3_close 关闭等)和基础流程。

Amuhber的博客 1162

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明

大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。

yushibing717的博客 928

18|AI 辅助精准测试:让平台会解释、会总结、会推荐

本文介绍 AI 在精准测试平台中的落地方式,包括变更摘要、风险解释、补测建议和报告总结。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。从报告中提取变更文件、未覆盖行、推荐用例。拼成结构化 JSON。让 AI 生成 200 字质量摘要。把摘要展示在报告顶部。读完本文后,可以复制下面的 Prompt,让 AI 生成一个报告总结练习。你是一名 AI 应用开发专家和测试架构师。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 55

Linux C sqlite3安装步骤以及基本命令与相关函数

关于Linux下sqlite3的安装,以及相关命令操作和C/C++的接口函数,以及相关代码示例

Lyttt的博客 2968

[QMT和ptrade量化交易小白入门]-125、菜场大妈加上四大现金行业指数风控,最大回撤从22%减少了一半

群里面有人建议,在菜场大妈策略的基础上,加入申万的行业指数(银行,钢铁,有色,煤炭)测算其宽度,当这四大行业其中有一个高就会清仓(用来控制回撤)。这背后的逻辑是,在存量资金博弈的市场环境中,资金总量相对固定,当银行、钢铁、有色、煤炭等大市值周期行业因基本面改善(如涨价、政策催化)或避险需求而走强时,会吸引大量资金涌入,导致其他板块(尤其是小市值股票)面临流动性虹吸。经过回测,对比上一个版本发现确实是可以降低一半的回撤,最大回撤从22.3%降到了11.4%,而且有很多时间是空仓等待。

木头大左的博客 239

linux 下sqlite的 C编程之sqlite3_get_table

说明:通过sqlite3_get_table查询得到的结果,其结构是:第一行是列名,随后的行才是值。遍历的方式和二维数组相同。#include &lt;unistd.h&gt;#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;sqlite3.h&gt;#include "test.h"int main(int argc, c...

好习惯成就伟大 6271

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

sqlite3c语言编程,c语言实现Sqlite3的创建db和增删改查db操作

本文将要为您介绍的是c语言实现Sqlite3的创建db和增删改查db操作,具体操作方法:SQLite,是一款轻型的数据库,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中使用广泛,现在准备学习一下sqlite3的使用方法并写一个测试demo,后面在项目智能家居网关中用起来,代替文本数据库(增删改查非常不方便)用法介绍创建或者打开一个存在的数据库db文件sqlite3 *d...

weixin_39928667的博客 994

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数据库sqlite3

轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作为应用程序的一部分运行。MySQL需要运行服务器,MySQL将需要客户端和服务器架构通过网络进行交互。基于嵌入式的数据库主要有:SQLiteFirebirdeXtremeDBFirebird是关系型数据库,功能强大,支持存储过程,SQL兼容等SQLite。

weixin_63303786的博客 7361

C语言操作SQL数据库

sqlite3是打开的数据库对象是一个回调data作为回调函数的第一个参数errmsg将被返回用来获取程序生成的任何错误程序解析并执行由sql参数所给的每个命令,直到字符串结束或者遇到错误为止数据库中有n条数据回调函数就会调用n次,注意return 0;得返回0,经过验证返回其他的只会调用一次。

weixin_58198422的博客 1473

Linux C SQLite3 编程

SQLite3         SQLite是一个轻量级的数据库。和常用的MySQL大同小异。和MySQL相比,数据类型基本一样,只是sqlite的指令都是以"."开头(如:mysql中查看当前有哪些数据库是“show databases",而sqlite中是".databases")。当然,SQL语句都是一样的语法规则。 Host System: Archlinux gcc: 4.6.1 2

shyodx的专栏 2178

c 语言 sqlite,SQLite 的 C 语言编程

执行sql语句复制代码 代码如下:intsqlite3_exec ( sqlite3 *db, // 使用 sqlite3_open () 打开的数据库对象。const char *sql, // 一条待查询的 SQL 语句sqlite3_callback, // 自定义的回调函数,对查询结果每一行都执行一次这个函数void *,char **errmsg);这是最常用的执行 sql 语句的调用...

weixin_32521745的博客 584

C语言使用sqlite3数据库【第三节】

int sqlite3_get_table( sqlite3 *db, /* 数据库句柄 */ const char *zSql, /* SQL 语句 */ char ***pazResult, /* 查询结果 一大堆的一维数组*/ int *pnRow, /* 记录条数 也就是多少行*/ int *pnColumn

狼啸极行的博客 389

sqlite3操作语句

sqlite3 关系型数据库,体积小。 特性:轻量级数据库,体积小,占用资源少,无需安装和管理配置。 缺点:不会进行严格的类型检查 sqlite3基本命令: 创建数据库:sqlite3 student.db 1- 系统命令 以 ‘ . ’开头的命令 .help 帮助 .quit 退出 .exit 退出 .schema 查...

qq_43449554的博客 563

sqlite c 入门

sqlite 编程接口 数据库的打开和关闭 int sqlite3_open(constchar*, sqlite3**); int sqlite3_close(sqlite3*); sqlite3为一个结构,它代指一个数据库连接,之后调用的大部分API函数都需要使用它作为其中一个参数。sqlite3_open的第一个参数为文件名字符串。两个函数都是成功返回SQLITE_OK,失败返回错误码。可以使用sqlite3_errmsg函数获得错误描述: constchar*sq...

thinker 539

sqlite3数据库C语言简单操作基础之数据的查找(三)

sqlite3数据库C语言简单操作基础之数据的查找(三)概述:sqlite3数据库的创建,增删改都说过了,今天就是数据库的查找,也算是数据库比较核心的应用。如果用之前的API执行,因查找数据库有返回值,也就导致使用sqlite_exec()函数时要写回调函数,我觉得这样子效率不高,编写麻烦,我这边就用几个新的API去做。这几个新的API其实就是sqlite_exec()函数的分解版。1,分解版API

Dancer__Sky的博客 2387

sqlite3: SQLite数据库的命令行接口 Command Line Shell For SQLite

原文地址:http://blogold.chinaunix.net/u3/90025/showart_1764687.html原文地址:http://www.sqlite.org/sqlite.html SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明。 开始 ...

angchanghui2104的博客 675

c语言sqlite3改多个参数,sqlite3的C语言使用(二)

前一天我列举了一些SQLite3库带的API,是SQLite的初级用法,今天我只讲一个API,但是用法会比前一次更好一点,便利一点。还记得我们的sqlite3_exec函数么,今天就是说一下它的扩展用法。函数原型int sqlite3_exec(sqlite3 *, /* An open database */const char ...

weixin_42449583的博客 483
上一篇: [编译环境][gcc]运行时无法找到动态链接库
下一篇: [编译环境][make]自动生成依赖关系
cloudblaze
博客等级 码龄17年 81粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值