<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Programmer_Dong的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Programmer_Dong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Programmer_Dong]]></copyright><item><title><![CDATA[sqlite数据库之事务处理]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134793379</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134793379</guid><author>Programmer_Dong</author><pubDate>Mon, 04 Dec 2023 20:57:08 +0800</pubDate><description><![CDATA[左边窗口执行事务，在开启事务后插入了一条数据，但是还没有提交或回滚，此时在右边窗口执行查询操作，结果查不到刚刚插入的数据，说明事务是线程互斥的。如图中所示，插入的数据保存在了数据库中。如图中效果所示，回滚之后插入的数据没有了。现在来试试插入数据后提交。在一个进程开启事务后，另一个进程插入记录会报错，显示数据库被锁住了。关于sqlite，我封装了几个类方法方便调用sqlite，课参考。然后开启事务，插入一条记录后执行回滚操作。现在来试试多进程间的事务处理关系。执行回滚后记录被撤回了。]]></description><category></category></item><item><title><![CDATA[sqlite数据库方法类使用说明-检查列字段是否存在、添加列、删除列]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134735395</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134735395</guid><author>Programmer_Dong</author><pubDate>Fri, 01 Dec 2023 16:20:45 +0800</pubDate><description><![CDATA[然后调用方法check_field检查字段SALARY是否灿在，若不存在则新增此字段，并且设置默认值为10000；若存在则提示已存在。插入后重新检查字段是否存在，并且查询一条记录打印其值，看默认值是否生效。注意“sqlite err info:query aborted”并非查询错误，此日志是因为check_field检查到字段存在时在回调函数中返回非0导致查询终止而形成的日志。本项目旨在分享知识和经验，欢迎广大网友一起加入到开源项目中一起分享贡献知识和经验。接下来是删除表中字段的例程。]]></description><category></category></item><item><title><![CDATA[sqlite方法类使用说明-blob数据类型读写操作]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134723720</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134723720</guid><author>Programmer_Dong</author><pubDate>Thu, 30 Nov 2023 23:29:29 +0800</pubDate><description><![CDATA[中的数据库方法类blob数据类型操作使用说明（包括blob数据类型的读操作和写操作等）。本项目旨在分享知识和经验，欢迎广大网友一起加入到开源项目中一起分享贡献知识和经验。编译以上代码，执行写入成功，接下来编写读blob数据测试代码以验证写入是否成功。需要注意的是写操作使用的列索引是从1开始的，并非从0开始，这个地方容易出错！本篇旨在分享接口类的使用，内部原理请参考文章。]]></description><category></category></item><item><title><![CDATA[sqlite数据库方法类使用说明-添加索引查询、检查索引是否存在]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134646787</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134646787</guid><author>Programmer_Dong</author><pubDate>Mon, 27 Nov 2023 21:07:59 +0800</pubDate><description><![CDATA[本文主要演示中的数据库方法类索引操作使用说明（包括新建索引、查询数据、检查索引是否存在等）。本项目旨在分享知识和经验，欢迎广大网友一起加入到开源项目中一起分享贡献知识和经验。]]></description><category></category></item><item><title><![CDATA[sqlite数据库方法类使用说明-创建数据表、查询数据表、插入记录]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134625828</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/134625828</guid><author>Programmer_Dong</author><pubDate>Sun, 26 Nov 2023 15:14:05 +0800</pubDate><description><![CDATA[/SQL 语句 仅供参考//创建表# ifndef __SELDOM_SQLITE_SQLCMD_H # define __SELDOM_SQLITE_SQLCMD_H //SQL 语句 仅供参考 //创建表 # define SQLCMD_CREATE_TABLE(TABLE_NAME , MEMBER) "CREATE TABLE IF NOT EXISTS " TABLE_NAME " (" MEMBER ");]]></description><category></category></item><item><title><![CDATA[sqlite数据库操作类使用说明-基础篇]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/118913709</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/118913709</guid><author>Programmer_Dong</author><pubDate>Mon, 19 Jul 2021 21:11:55 +0800</pubDate><description><![CDATA[sqlite数据库操作类使用说明-基础篇
本文主要演示sqlite数据库类的基础用法。
本篇数据库类使用c++进行封装，但导出了C语言接口，本文测试代码使用的是C语言用法，c++用法基本一致，集成了一些常用的宏定义以及不常用的宏定义用法。
先上测试代码：
#include &lt;Wdebug.h&gt;
#include &lt;stdio.h&gt;

#include &lt;sqlite/Wsqlite.h&gt;
#include &lt;stdlib.h&gt;

#define		TABLE_]]></description><category></category></item><item><title><![CDATA[sqlite之按先插入先删除规则限制记录数]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115977634</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115977634</guid><author>Programmer_Dong</author><pubDate>Wed, 21 Apr 2021 20:45:21 +0800</pubDate><description><![CDATA[sqlite之按先插入先删除规则限制记录数

首先创建一个带时间的表，并插入一些记录
查询记录
现在总共有11条记录

执行语句：delete from record where rowid in (select rowid from record limit 2);
删除最先插入的两条记录，然后查询结果如下：



...]]></description><category></category></item><item><title><![CDATA[sqlite3数据库之blob数据类型读写]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115678387</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115678387</guid><author>Programmer_Dong</author><pubDate>Tue, 13 Apr 2021 22:37:57 +0800</pubDate><description><![CDATA[sqlite3数据库之blob数据类型读写
近期在开发过程中需要在数据库中保存二进制文件，于是去了解了一下sqlite3的数据类型，发现blob可以存储二进制数据。
但是blob要如何操作呢？用什么语句呢？
其实它是需要操作sqlite3库的一些底层API来实现。
下面我们就来做实验。
先上测试代码：
#include "Wdebug.h"

#include "sqlite/Wsqlite.h"
#include &lt;stdlib.h&gt;
#define		TABLE_NAME		"TEST_BL]]></description><category></category></item><item><title><![CDATA[sqlite3 踩坑日记之INTEGER型主键与rowid]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115645342</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115645342</guid><author>Programmer_Dong</author><pubDate>Mon, 12 Apr 2021 22:42:28 +0800</pubDate><description><![CDATA[sqlite3 踩坑日记之INTEGER型主键与rowid
sqlite创建表的时候有个隐藏字段为rowid，本以为这个字段是固定存在不变的。
但是实践之后发现我错了。。。
先上代码：

#include &lt;strio.h&gt;
#include "sqlite/sqlite.h"
#include &lt;stdlib.h&gt;

#define		TABLE_NAME		"TEST"

static int callback(void* pdata, int argc, char** argv]]></description><category></category></item><item><title><![CDATA[c++字符串操作之std::ostringstream踩坑日记]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115643850</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/115643850</guid><author>Programmer_Dong</author><pubDate>Mon, 12 Apr 2021 22:29:19 +0800</pubDate><description><![CDATA[c++字符串操作之std::ostringstream踩坑日记
在开发过程中经常会遇到字符串操作，而std::string又没有format操作，这就很难受了。
于是我找到了std::ostringstream类；ostringstream类的用法也很简单，就是流操作。
头文件：include &lt;sstream&gt;
如：

int number = 14;
double ddata = 21.7;
char* pstr = "test";
std::ostringstream ostr;
ostr]]></description><category></category></item><item><title><![CDATA[c语言0长度数组]]></title><link>https://blog.youkuaiyun.com/Programmer_Dong/article/details/106006159</link><guid>https://blog.youkuaiyun.com/Programmer_Dong/article/details/106006159</guid><author>Programmer_Dong</author><pubDate>Fri, 08 May 2020 22:08:41 +0800</pubDate><description><![CDATA[零长度数组0长度数组有何意义呢？那么0长度的数组有什么作用呢？
单独定义数组是不合法的，编译器会报错，但是如果定义在结构体中则编译器视为合法语法；定义示例如下所示：

struct str{

    int len;

    char s[0];
};

0长度数组有何意义呢？
	0长度数组实质上就是指长度为0的数组，在结构体中它不占用内存空间。

	在控制台输出上述结构体的大小可以得到如下结果：

printf("sizeof(str) = %ld\r\n", sizeof(struct str));]]></description><category></category></item></channel></rss>