当前位置: 首页 > 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可以正常写入数据了。

http://www.xdnf.cn/news/1007173.html

相关文章:

  • flowable 数据库表结构分析(超全版)
  • 泛型的PECS原则
  • 多版本IDA分别使用不同的python版本
  • 新能源知识库(45)光储一体机介绍
  • 力扣:基本计算器
  • 【最短循环节问题——hash】
  • 什么是RADIUS?一文速通!
  • 算法训练第十六天
  • 蓝桥杯国赛训练 day4
  • 主流邻近标记技术解析与应用
  • 构建安全可靠的电子商务平台的综合策略
  • 基础专题(遗漏):代码颜色
  • 学习日记-day28-6.12
  • OpenCV 随机数和随机颜色
  • 单片机中面向对象的思维
  • 如何处理HTML5兼容性的问题
  • glibc
  • 数据信号处理方法三板斧
  • 会技术的产品经理
  • Keep-Alive 续集:Vue.extend 的遗产解析与优雅告别
  • 文档测试发送
  • 聚集索引与非聚集索引
  • Chapter07-信息披漏
  • Python原生爬虫教程:微店商品详情API接口攻略指南
  • 安徽省考计算机专业课笔记
  • XSS攻击概念通俗解释
  • STM32H7 SD卡使用以及其DMA读写
  • 【AI】理解神经网络原理
  • Java学习笔记之:Vue中路由的基本使用
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(34):ようですそうですばかりのに