秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
一、安装SQLIte3static
从网上找到的方法:
https://stackoverflow.com/questions/37912845/static-link-sqlite-in-lazarus
安装包下载:
https://icculus.org/%7Ekfitzner/misc/sqlite3staticconnection_050.zip
下载后安装sqlite3static.lpk
我修改了sqlite3static.lpk libsqlite3.a文件的默认目录

自行编译SQLite3的libsqlite3.a文件,将libsqlite3.a文件放入对应目录,我将编译的libsqlite3.a放在staticlib目录,用上面的安装包应将libsqlite.a放lib目录。
自行编译libsqlite3.a可以参照:
mingw64编译sqlite3.dll - 秋·风 - 博客园

二、使用方法
使用方法和原来的一样,将原来的TSQLite3Connection替换为TSQLite3StaticConnection,在uses添加sqlite3staticconnection单元,并添加依赖包sqlite3static。


简单的示例:

procedure TForm1.InitDatabase;
var
  SQLConn: TSQLite3StaticConnection ;
  SQLTrans: TSQLTransaction;
begin
  if not FileExists('test.db') then
  begin
    SQLConn := TSQLite3staticConnection.Create(nil);
    SQLTrans := TSQLTransaction.Create(nil);
    try
      SQLConn.DatabaseName := 'test.db';
      SQLConn.Transaction := SQLTrans;
      SQLConn.Open;

      // 创建存储表
      SQLConn.ExecuteDirect(
        'CREATE TABLE embeddings('+
        'id INTEGER PRIMARY KEY AUTOINCREMENT,'+
        'text TEXT NOT NULL,'+
        'vector BLOB NOT NULL,'+    // 二进制存储浮点数组
        'timestamp DATETIME DEFAULT CURRENT_TIMESTAMP);'
      );

      SQLTrans.Commit;
    finally
      SQLConn.Free;
      SQLTrans.Free;
    end;
  end;
end;

编译后的应用不需带sqlite3.dll或libsqlite3.so文件。
这个方法在win64/aarch64测试通过。

posted on 2025-03-15 16:04  秋·风  阅读(263)  评论(0)    收藏  举报