Javen的文档


Lazarus连接SQLite示例

<p>以下是一个完整的 Lazarus 连接 SQLite 的示例:</p> <h2>1. 准备工作</h2> <p>windows要安装SQLite3和配置环境。[详细点击](<a href="https://www.showdoc.com.cn/atech/11559027240620309">https://www.showdoc.com.cn/atech/11559027240620309</a> &quot;详细点击&quot;)</p> <h2>2. 界面设计</h2> <p>在窗体上放置以下组件:</p> <ul> <li>TSQLConnector</li> <li>TSQLTransaction </li> <li>TSQLQuery</li> <li>TDataSource</li> <li>TDBGrid</li> <li>TButton(几个操作按钮)</li> </ul> <h2>3. 完整代码示例</h2> <pre><code class="language-pascal">unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBGrids, StdCtrls, DB, sqldb, SQLite3Conn; type { TForm1 } TForm1 = class(TForm) btnConnect: TButton; btnCreateTable: TButton; btnInsert: TButton; btnSelect: TButton; DataSource1: TDataSource; DBGrid1: TDBGrid; SQLConnector1: TSQLConnector; SQLQuery1: TSQLQuery; SQLTransaction1: TSQLTransaction; procedure btnConnectClick(Sender: TObject); procedure btnCreateTableClick(Sender: TObject); procedure btnInsertClick(Sender: TObject); procedure btnSelectClick(Sender: TObject); procedure FormCreate(Sender: TObject); private FDatabasePath: string; public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin // 设置数据库文件路径 FDatabasePath := ExtractFilePath(Application.ExeName) + &amp;#039;test.db&amp;#039;; Caption := &amp;#039;SQLite Demo - 数据库: &amp;#039; + FDatabasePath; // 配置数据库连接 SQLConnector1.ConnectorType := &amp;#039;SQLite3&amp;#039;; SQLConnector1.DatabaseName := FDatabasePath; SQLConnector1.Transaction := SQLTransaction1; SQLQuery1.DataBase := SQLConnector1; DataSource1.DataSet := SQLQuery1; DBGrid1.DataSource := DataSource1; end; procedure TForm1.btnConnectClick(Sender: TObject); begin try // 连接数据库 SQLConnector1.Connected := True; ShowMessage(&amp;#039;数据库连接成功!&amp;#039;); except on E: Exception do ShowMessage(&amp;#039;连接失败: &amp;#039; + E.Message); end; end; procedure TForm1.btnCreateTableClick(Sender: TObject); var SQL: string; begin if not SQLConnector1.Connected then begin ShowMessage(&amp;#039;请先连接数据库!&amp;#039;); Exit; end; try SQL := &amp;#039;CREATE TABLE IF NOT EXISTS users (&amp;#039; + &amp;#039;id INTEGER PRIMARY KEY AUTOINCREMENT, &amp;#039; + &amp;#039;name VARCHAR(50) NOT NULL, &amp;#039; + &amp;#039;email VARCHAR(100), &amp;#039; + &amp;#039;age INTEGER, &amp;#039; + &amp;#039;created_date DATETIME DEFAULT CURRENT_TIMESTAMP)&amp;#039;; SQLQuery1.SQL.Text := SQL; SQLQuery1.ExecSQL; SQLTransaction1.Commit; ShowMessage(&amp;#039;数据表创建成功!&amp;#039;); except on E: Exception do begin SQLTransaction1.Rollback; ShowMessage(&amp;#039;创建表失败: &amp;#039; + E.Message); end; end; end; procedure TForm1.btnInsertClick(Sender: TObject); begin if not SQLConnector1.Connected then begin ShowMessage(&amp;#039;请先连接数据库!&amp;#039;); Exit; end; try // 插入示例数据 SQLQuery1.SQL.Text := &amp;#039;INSERT INTO users (name, email, age) VALUES &amp;#039; + &amp;#039;(&amp;#039;&amp;#039;张三&amp;#039;&amp;#039;, &amp;#039;&amp;#039;zhangsan@email.com&amp;#039;&amp;#039;, 25), &amp;#039; + &amp;#039;(&amp;#039;&amp;#039;李四&amp;#039;&amp;#039;, &amp;#039;&amp;#039;lisi@email.com&amp;#039;&amp;#039;, 30), &amp;#039; + &amp;#039;(&amp;#039;&amp;#039;王五&amp;#039;&amp;#039;, &amp;#039;&amp;#039;wangwu@email.com&amp;#039;&amp;#039;, 28)&amp;#039;; SQLQuery1.ExecSQL; SQLTransaction1.Commit; ShowMessage(&amp;#039;数据插入成功!&amp;#039;); except on E: Exception do begin SQLTransaction1.Rollback; ShowMessage(&amp;#039;插入数据失败: &amp;#039; + E.Message); end; end; end; procedure TForm1.btnSelectClick(Sender: TObject); begin if not SQLConnector1.Connected then begin ShowMessage(&amp;#039;请先连接数据库!&amp;#039;); Exit; end; try SQLQuery1.Close; SQLQuery1.SQL.Text := &amp;#039;SELECT * FROM users&amp;#039;; SQLQuery1.Open; ShowMessage(&amp;#039;查询成功,共 &amp;#039; + IntToStr(SQLQuery1.RecordCount) + &amp;#039; 条记录&amp;#039;); except on E: Exception do ShowMessage(&amp;#039;查询失败: &amp;#039; + E.Message); end; end; end.</code></pre> <h2>4. 组件属性设置</h2> <p>在对象检查器中设置以下属性:</p> <p><strong>SQLConnector1:</strong></p> <ul> <li>ConnectorType: SQLite3</li> <li>DatabaseName: (程序运行时会自动设置)</li> </ul> <p><strong>SQLTransaction1:</strong></p> <ul> <li>DataBase: SQLConnector1</li> </ul> <p><strong>SQLQuery1:</strong></p> <ul> <li>DataBase: SQLConnector1</li> <li>Transaction: SQLTransaction1</li> </ul> <p><strong>DataSource1:</strong></p> <ul> <li>DataSet: SQLQuery1</li> </ul> <p><strong>DBGrid1:</strong></p> <ul> <li>DataSource: DataSource1</li> </ul> <h2>5. 使用说明</h2> <ol> <li><strong>连接数据库</strong>:点击&quot;连接&quot;按钮建立数据库连接</li> <li><strong>创建表</strong>:点击&quot;创建表&quot;按钮创建用户表</li> <li><strong>插入数据</strong>:点击&quot;插入数据&quot;按钮添加示例数据</li> <li><strong>查询数据</strong>:点击&quot;查询数据&quot;按钮显示所有记录</li> </ol> <h2>6. 高级示例 - 参数化查询</h2> <pre><code class="language-pascal">// 安全的参数化插入 procedure TForm1.SafeInsert; begin SQLQuery1.SQL.Text := &amp;#039;INSERT INTO users (name, email, age) VALUES (:name, :email, :age)&amp;#039;; SQLQuery1.ParamByName(&amp;#039;name&amp;#039;).AsString := &amp;#039;赵六&amp;#039;; SQLQuery1.ParamByName(&amp;#039;email&amp;#039;).AsString := &amp;#039;zhaoliu@email.com&amp;#039;; SQLQuery1.ParamByName(&amp;#039;age&amp;#039;).AsInteger := 35; SQLQuery1.ExecSQL; SQLTransaction1.Commit; end; // 带条件的查询 procedure TForm1.ConditionalQuery; begin SQLQuery1.Close; SQLQuery1.SQL.Text := &amp;#039;SELECT * FROM users WHERE age &amp;gt; :min_age&amp;#039;; SQLQuery1.ParamByName(&amp;#039;min_age&amp;#039;).AsInteger := 25; SQLQuery1.Open; end;</code></pre> <h2>注意事项</h2> <ol> <li>SQLite 数据库文件会在首次连接时自动创建</li> <li>记得在数据修改后调用 <code>SQLTransaction1.Commit</code></li> <li>异常处理中要调用 <code>SQLTransaction1.Rollback</code></li> <li>程序关闭时会自动断开数据库连接</li> </ol> <p>这个示例展示了 Lazarus 连接 SQLite 的基本操作,你可以根据实际需求进行扩展。</p>

页面列表

ITEM_HTML