lazarus使用zeosDB控件時發(fā)現(xiàn)SQLite一個奇怪的現(xiàn)象,應用程序編譯為win64時,如果輸入"中國2022中國"時出現(xiàn)亂碼,win32和linux 64正常,開始懷疑的sqlite3.dll的問題,下載最新版sqlite源碼重新編譯sqlite3.dll也存在同樣問題,改用lazarus自帶的SQLDB 編譯為win64/win32/linux64都使用正常, 暫時認為是zeosDB(使用最新的版本也有同樣問題)編譯為win64時存在Bug.
使用zeosDB,修改或插入“中國2022中國”后出現(xiàn)亂碼:
使用zeosDB,修改或插入“中國2022中國”后出現(xiàn)亂碼:
使用SQLDB控件可以參考以下設(shè)置:
SQLiteLibraryName:='./libsqlite3.so'; //so存放當前目錄 SQLite3Connection1.DatabaseName:='./demo.db3';//db數(shù)據(jù)庫文件存放當前目錄 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.數(shù)據(jù)變更后除SQLQuery1.ApplyUpdates外,還要使用事務提交后才會將數(shù)據(jù)保存到數(shù)據(jù)庫:SQLTransaction1.Commit;
SQLQuery1.ApplyUpdates();
SQLTransaction1.Commit;
使用SQLDB修改或插入“中國2022中國”能正常保存:

浙公網(wǎng)安備 33010602011771號