热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

lazarus使用sqlite3遇到特定字符时出现乱码的Bug

lazarus使用zeosDB控件时发现SQLite一个奇怪的现象,应用程序编译为win64时,如果输入中国2022中国时出现乱码,win32和linux64正常,开始怀疑的sql

lazarus使用zeosDB控件时发现SQLite一个奇怪的现象,应用程序编译为win64时,如果输入"中国2022中国"时出现乱码,win32和linux 64正常,开始怀疑的sqlite3.dll的问题,下载最新版sqlite源码重新编译sqlite3.dll也存在同样问题,改用lazarus自带的SQLDB 编译为win64/win32/linux64都使用正常, 暂时认为是zeosDB(使用最新的版本也有同样问题)编译为win64时存在Bug.
使用zeosDB,修改或插入“中国2022中国”后出现乱码:

 

 使用SQLDB控件可以参考以下设置:

SQLiteLibraryName:='./libsqlite3.so'; //so存放当前目录
SQLite3Connection1.DatabaseName:
='./demo.db3';//db数据库文件存放当前目录
SQLite3Connection1.Connected:
=true;
SQLTransaction1.Active:
=true;
DataSource3.DataSet:
=SQLQuery1;
SQLQuery1.SQL.Text:
='select * from hardware';
SQLQuery1.Open;

使用SQLDB时在注意以下:
可以使用SQLiteLibraryName指定sqlite3.dll或libsqlite3.so的位置
数据变更后除SQLQuery1.ApplyUpdates外,还要使用事务提交后才会将数据保存到数据库:SQLTransaction1.Commit;  

SQLQuery1.ApplyUpdates();
SQLTransaction1.Commit;

 使用SQLDB修改或插入“中国2022中国”能正常保存:

 



推荐阅读
author-avatar
孟庆旭M
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有