前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >sqlite3的C语言使用(二)

sqlite3的C语言使用(二)

作者头像
phith0n
发布于 2020-10-15 14:03:41
发布于 2020-10-15 14:03:41
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

    前一天我列举了一些SQLite3库带的API,是SQLite的初级用法,今天我只讲一个API,但是用法会比前一次更好一点,便利一点。

    还记得我们的sqlite3_exec函数么,今天就是说一下它的扩展用法。

函数原型 int sqlite3_exec( sqlite3 *, /* An open database */ const char *sql, /* SQL to be evaluated */ int (*callback)(void*,int,char**,char**), /* 回调函数 */ void *, /* 传递给回调函数的参数 */ char **errmsg /* Error msg written here */ );

    函数的作用就是执行sql语句,上次我们用这个函数执行的是CREATE TABLE命令,是不带返回值的。其实sqlite3_exec也能执行select语句,而且也能获得返回值,其中第三个参数(是个回调函数)起到了很大作用。

    回调函数,就是在sqlite3_exec执行完成后自动被调用的函数。如果select返回多行数据,每返回一行回调函数将执行一次。(其中sqlite3_exec只用调用一次)

    我来说明一下回调函数的各个参数。在sqlite3_exec的函数原型里可以看到,第三个参数是这么写的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int (*callback)(void*,int,char**,char**)

    这就是回调函数的格式。回调函数中:

    第一个参数是sqlite3_exec传进来的参数,也就是回调函数和外界交流的通道,比如我们可以传一个结构体指针地址进来,然后把查询到的数据保存在结构体中。

    第二个参数是查询到的这一行总字段数n(总列数)。

    第三个参数是一个数组,从0到n-1保存着咨询结果,都是字符串。

    第四个参数和第三个对应,是每个字段的字段名,也是字符串。

    知道了回调函数的格式,我们就可以利用sqlite3_exec来查询数据库并用回调函数处理查询结果了。函数可以这么写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void AllSelect(sqlite3 * db)
{
	char * errmsg;
	int rc = sqlite3_exec(db,"select * from addlist",GetDate,NULL,&errmsg);
	if(rc != SQLITE_OK)
	{
		printf("%s\n",errmsg);
	}
	return ;
}

int GetDate(void * para,int n_column,char** data_column,char** name_column)
{
	printf("编号:%d 姓名:%s 性别:%s 电话:%s Email:%s 地址:%s\n",
		data_column[0],data_column[1],data_column[2],data_column[3],
		data_column[4],data_column[5]);
	return 0;
}

    相比于之前用sqlite3_prepare、sqlite3_step要简单很多吧?不过它也有局限性,如果数据库里保存着的是二进制文件(图片、压缩包什么的),就不能用了这个方法了。

    还有,前一次没有注意到的,sqlite3_exec的最后一个参数errmsg,以前都传入的是NULL,其实对于数据库来说,这个参数是很有作用的,它可以获取数据库出错信息。正如我这次写的代码一样,如果sqlite3_exec执行不成功,则printf("%s\n",errmsg);

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Qwen2大模型微调入门实战-命名实体识别(NER)任务
以Qwen2作为基座大模型,通过指令微调的方式做高精度的命名实体识别(NER),是学习入门LLM微调、建立大模型认知的非常好的任务。
用户9029617
2024/06/20
1.1K0
Qwen2大模型微调入门实战-命名实体识别(NER)任务
Qwen2大模型微调入门实战-命名实体识别(NER)任务
以Qwen2作为基座大模型,通过指令微调的方式做高精度的命名实体识别(NER),是学习入门LLM微调、建立大模型认知的非常好的任务。
zenRRan
2024/07/04
2.1K0
Qwen2大模型微调入门实战-命名实体识别(NER)任务
GLM4大模型微调入门实战(完整代码)
以GLM4作为基座大模型,通过指令微调的方式做高精度文本分类,是学习LLM微调的入门任务。
用户9029617
2024/06/12
1.9K0
GLM4大模型微调入门实战(完整代码)
【机器学习】QLoRA:基于PEFT亲手量化微调Qwen2大模型
之前陆续写了Qwen1.5、Qwen2.0、GLM-4等国产开源大模型的原理、训练及推理相关的文章,每一篇都拿到了热榜第一,但其中训练部分均基于Llama-factory框架,对于工程师而言,最喜欢的就是刨根问底,使用中间层的训练框架,还是少一些“安全感”。今天我们抛开中间框架,深入底层,一步一步带大家微调一个大模型。
LDG_AGI
2024/08/13
1.7K0
【机器学习】QLoRA:基于PEFT亲手量化微调Qwen2大模型
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
Gemma 是 Google 推出的轻量级、先进的开放模型系列,采用与 Gemini 模型相同的研究成果和技术构建而成。它们是仅使用解码器的文本到文本大型语言模型(提供英语版本),为预训练变体和指令调整变体具有开放权重。Gemma 模型非常适合各种文本生成任务,包括问题解答、摘要和推理。由于它们相对较小,因此可以将其部署在资源有限的环境(如笔记本电脑、桌面设备或您自己的云基础架构)中,让更多人能够使用先进的 AI 模型,并帮助促进每个人的创新。
LDG_AGI
2024/08/13
7550
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
【机器学习】Qwen2大模型原理、训练及推理部署实战
刚刚写完【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战 ,阿里Qwen就推出了Qwen2,相较于Qwen1.5中0.5B、1.8B、4B、7B、14B、32B、72B、110B等8个Dense模型以及1个14B(A2.7B)MoE模型共计9个模型,Qwen2包含了0.5B、1.5B、7B、57B-A14B和72B共计5个尺寸模型。从尺寸上来讲,最关键的就是推出了57B-A14B这个更大尺寸的MoE模型,有人问为什么删除了14B这个针对32G显存的常用尺寸,其实对于57B-A14B剪枝一下就可以得到。
LDG_AGI
2024/08/13
2.7K0
【机器学习】Qwen2大模型原理、训练及推理部署实战
【LLM训练系列04】手把手教你Qlora微调
IGNORE_TOKEN_ID 是一个常量,通常用于在训练过程中忽略某些特定的标签或输入。它的作用是告诉模型在计算损失时不考虑这些特定的标签或输入。
致Great
2024/12/21
2200
【LLM训练系列04】手把手教你Qlora微调
零基础入门:DeepSeek微调教程来了!
在此处可以看到很明显大模型进行微调后口吻已经发生了更改。据笔者使用下来的记录表示,微调后的大模型思考时间更加短暂。
Datawhale
2025/02/25
1.3K0
零基础入门:DeepSeek微调教程来了!
MiniCPM-o-2.6 多模态大模型微调实战(完整代码)
MiniCPM-o-2.6是OpenBMB(面壁智能)团队最近开源的多模态大语言模型。以MiniCPM-o-2.6作为基座多模态大模型,通过指令微调的方式实现特定场景下的OCR,是学习多模态LLM微调的入门任务。
Grafin
2025/01/25
5240
MiniCPM-o-2.6 多模态大模型微调实战(完整代码)
使用QLoRa微调Llama 2
上篇文章我们介绍了Llama 2的量化和部署,本篇文章将介绍使用PEFT库和QLoRa方法对Llama 27b预训练模型进行微调。我们将使用自定义数据集来构建情感分析模型。只有可以对数据进行微调我们才可以将这种大模型进行符合我们数据集的定制化。
deephub
2023/08/30
6920
使用QLoRa微调Llama 2
大模型微调新手全流程友好指南
关于大模型微调的文章已经写过有两篇:大模型微调与RAG检索增强有何区别?从基础原理到案例分析全面详解和一文带你了解大模型微调的前世今生,基础概率和理论原理内容基本上都涵盖全面,因此本篇文件不做过多的原理解释说明,主要聚焦于大模型微调的实战和各个代码功能模块细节的讲解。
fanstuck
2025/04/30
6037
大模型微调新手全流程友好指南
零基础入门:DeepSeek微调的评测教程来了!
三天前,看到了我们 Datawhale 公众号上发了文章《零基础入门:DeepSeek 微调教程来了!》反响很好,其中的内容写的非常接地气,适合学习者进行学习体验。
Datawhale
2025/02/28
2620
零基础入门:DeepSeek微调的评测教程来了!
在腾讯云云服务器上推理及微调Qwen2-7B大语言模型
随着人工智能技术的迅速发展,大型预训练模型(LLMs)在各种语言、代码及数学问题解决方面展现出了巨大潜力。Qwen2系列模型的推出无疑为自然语言处理(NLP)和多语言理解带来了新的飞跃。今天,我们将深入探讨如何在腾讯云云服务器上部署和微调2024年6月推出的大型语言模型Qwen2中的Qwen2-7B,探索其强大的代码和数学能力、出色的多语言处理能力,加速您的AI项目进程。
buzzfrog
2024/07/02
1.7K1
在腾讯云云服务器上推理及微调Qwen2-7B大语言模型
Qwen7b微调保姆级教程
前方干货预警:这可能是你能够找到的,最容易理解,最容易跑通的,适用于各种开源LLM模型的,同时支持多轮和单轮对话数据集的大模型高效微调范例。
lyhue1991
2023/09/17
2.1K0
Qwen7b微调保姆级教程
大模型实战:使用 LoRA(低阶适应)微调 LLM
[1] 详细内容请参阅 MarkAI Blog [2] 更多资料及工程项目请关注 MarkAI Github [3] 通关感知算法面试请Star 2024年千道算法面试题综述
码科智能
2023/12/19
5.9K2
大模型实战:使用 LoRA(低阶适应)微调 LLM
从头预训练一只超迷你 LLaMA 3
这次打算用 Hugging Face 的 API 来写一份预训练大(小)模型的代码,也就是用 Trainer 来做预训练。由于只是想练习一下,因此打算选一个极小模型 + 小数据集。为了贴近主流,于是打算预训练一个 LLaMA 3——不过是超迷你版本,大小仅不到 20M。
NewBeeNLP
2024/06/04
9960
从头预训练一只超迷你 LLaMA 3
Baichuan-13B 保姆级微调范例
干货预警:这可能是你能够找到的最容易懂的,最完整的,适用于各种NLP任务的Baichuan-13B-Chat的finetune教程~
lyhue1991
2023/09/05
1.4K0
Baichuan-13B 保姆级微调范例
在腾讯云云服务器上使用Qwen2-0.5B模型推理
在人工智能(AI)的黄金时代,我们见证了技术的边界不断扩展,模型的能力日益增强。今天,我要介绍的主角是Qwen2-0.5B模型,千问最新的大语言模型,以及如何在腾讯云云服务器上部署和使用它,开启AI应用的新旅程。
buzzfrog
2024/07/02
1.3K0
在腾讯云云服务器上使用Qwen2-0.5B模型推理
怎么让英文大语言模型支持中文?(三)进行指令微调
这里是最后一部分了:怎么让英文大语言模型支持中文?(三)对预训练模型进行指令微调。
西西嘛呦
2023/07/10
1.1K0
在自定义数据集上微调Alpaca和LLaMA
本文将介绍使用LoRa在本地机器上微调Alpaca和LLaMA,我们将介绍在特定数据集上对Alpaca LoRa进行微调的整个过程,本文将涵盖数据处理、模型训练和使用流行的自然语言处理库(如Transformers和hugs Face)进行评估。此外还将介绍如何使用grado应用程序部署和测试模型。
deephub
2023/08/30
1.4K0
在自定义数据集上微调Alpaca和LLaMA
推荐阅读
相关推荐
Qwen2大模型微调入门实战-命名实体识别(NER)任务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档