当前位置: 首页 > news >正文

【sqlite开发】遇到的问题及解决方法收录

前言

        sqlite是一种本地化的轻量级数据库,在数据量级不是很大(百万以上)的情况下,并且开发人员习惯SQL的业务开发逻辑时,能很大的提供项目开发效率。以下主要是收录在window10系统有以及国产桌面操作系统(麒麟kylin v10 sp1、统信UOS)项目开发中遇到的问题及解决方法。

开发环境及常用工具

window 10

开发环境

        本人是使用QTcreator创建项目进行开发的,只需要在.pro文件中加上QT  += sql即可

常用工具

        sqlite3(点击可到下载页面,下载sqlite-tools-win-x64-xxxx.zip),找一个目录进行解压(比如:D:\sqlite),包含有以下4个文件,这里只介绍sqlite3.exe。

把D:\sqlite路径加入到系统环境变量path中,即可在CMD命令行中使用sqlite3。

以下是命令行操作样例

国产桌面操作系统(linux)

开发环境

        QTcreator开发的方式在window中已经介绍,是通用的,以下介绍C++程序的开发方式,需要下载libsqlite3库

sudo apt install libsqlite3-dev

编译时,要加上-lsqlite3,以下为Makefile文件

CC        = g++
CFLAGS   =
DEBUGFLAG = -g -Wall
SRCS      = $(wildcard *.cpp)
LIBDIRS   = -L./ 
LIBS      = -lsqlite3 
INCLUDE   =
TARGET    = sqlitedemo
OBJS      = $(SRCS:.cpp=.o)all: $(TARGET)# 生成可执行文件
$(TARGET): $(OBJS)$(CC)  $^ -o $@ $(LIBS) # 通用规则:编译 .cpp 文件为 .o 文件
%.o: %.cpp$(CC)  -c $< -o $@  $(LIBS) clean:rm -f $(OBJS) $(TARGET).PHONY: all clean

常用工具

        sqlite3,麒麟kylin v10 sp1 和统信UOS系统默认已经安装有sqlite3,直接命令行sqlite3 xxx.db即可,sqlite3的语法是通用的。

问题收录及解决方法

sqlite与mysql存在差异的语法

1、创建表时的自增字段

SQLite:用INTEGER PRIMARY KEY

MySQL:用AUTO_INCREMENT

2、忽略方式插入数据

SQLite:INSERT OR IGNORE INTO users (id, name) VALUES (1, 'Alice');

MySQL:INSERT IGNORE INTO users (id, name) VALUES (1, 'Alice');

sqlite比mysql多了一个OR

3、Linux共享目录给window,window无法写数据到共享目录中的db文件

        在开发方案选型中,不想编写专有的socket通信服务来打通Linux和window的交互时,可以在共享目录中通过缓存文件(普通的文件读写、sqlite数据库文件读写等)进行交互,特别是1对1交互,且涉及的交互内容少时,此种方案开发快,响应快且稳定。

        本人在开发时,使用smb服务进行的共享挂载。先是在Linux下生成db文件,然后window(专业版win10)端需要读取数据,并写入数据,此时发现读取数据是正常的,却无法写入数据,是存在写入权限问题,我手动去删除文件时,报错信息如下

这是系统权限冲突了,我没有选择去改到window的权限,而是如下简单的操作即可:

1、把这个db文件拷贝到window桌面;

2、然后在Linux系统的共享目录中,删掉这个db文件;

3、如果把window桌面的db文件拷贝会共享目录中,此时在window端的共享目录中可以删掉这个db文件,说明不存在系统权限冲突的问题,此时window端的sqlite可以正常写入数据了。

相关文章:

  • 【chipyard】Gemmini 定制
  • 【MicronTech】eMMC 部件编号解析
  • python3.12安装记录
  • Systemctl 手记:从服务管理到资源控制的进阶实践
  • 纯血HarmonyOS ArKTS NETX 5 打造小游戏实践:大鱼吃小鱼(附源文件)
  • 明远智睿SD2351核心板:边缘计算时代的工业级核心引擎深度解析
  • 安装 Poppler(Windows)
  • linux 配置mvn
  • RK3588 ENV 环境配置之 fw_printenv
  • 高效管理Python环境:Miniforge、pyenv和Poetry深度对比与应用
  • TEXT2SQL-vanna多表关联的实验
  • 开源模型应用落地:GLM-4 上手实测体验报告!
  • 瓷器数字化展示文物三维扫描建模-中科米堆
  • Flink 系列之二十九- Flink SQL - 中间算子:窗口聚合
  • 51la工具有哪些功能?悟空统计的核心功能呢?
  • NVIDIA Isaac GR00T N1.5 适用于 LeRobot SO-101 机械臂
  • 【Python打卡Day35】模型可视化与推理@浙大疏锦行
  • Ntfs!NtfsAllocateRestartTableIndex函数分析和Ntfs!DIRTY_PAGE_ENTRY_V0结构的关系
  • Nacos服务注册失败解决方案
  • Unity Mecanim C# 动画切换实践:实现随机播放待机动画
  • 网站无icp备案/外贸平台自建站
  • 陶瓷 中企动力 网站建设/网络营销的主要方式
  • 青岛网站设计哪家好/百度推广业务员电话
  • 网站用什么软件程序做/网络营销教材电子版
  • java jsp做网站/国外seo网站
  • 网站推广策划公司/互联网营销师考试内容