lazarus使用zeosDB控件时发现SQLite一个奇怪的现象,应用程序编译为win64时,如果输入"中国2022中国"时出现乱码,win32和linux 64正常,开始怀疑的sqlite3.dll的问题,下载最新版sqlite源码重新编译sqlite3.dll也存在同样问题,改用lazarus自带的SQLDB 编译为win64/win32/linux64都使用正常, 暂时认为是zeosDB(使用最新的版本也有同样问题)编译为win64时存在Bug.
使用zeosDB,修改或插入“中国2022中国”后出现乱码:
使用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时在注意以下:
1.可以使用SQLiteLibraryName指定sqlite3.dll或libsqlite3.so的位置
2.数据变更后除SQLQuery1.ApplyUpdates外,还要使用事务提交后才会将数据保存到数据库:SQLTransaction1.Commit;
SQLQuery1.ApplyUpdates();
SQLTransaction1.Commit;
使用SQLDB修改或插入“中国2022中国”能正常保存: