可把下面代码直接贴在空白窗体上, 以快速完成窗体设计:
代码:
{建立} procedure TForm1.FormCreate(Sender: TObject); const strTable = 'CREATE TABLE MyTable(Id integer PRIMARY KEY AUTOINCREMENT, Name string(10), Age integer)'; //Id(自增), Name, Age begin FDConnection1.DriverName := 'SQLite'; FDQuery1.ExecSQL(strTable); FDQuery1.Open('SELECT * FROM MyTable'); end; {逐条插入} procedure TForm1.Button1Click(Sender: TObject); const strInsert = 'INSERT INTO MyTable(Name, Age) VALUES(:name, :age)'; begin // FDQuery1.FetchOptions.AutoClose := True; //默认值 FDQuery1.ExecSQL(strInsert, ['A', 1]); FDQuery1.ExecSQL(strInsert, ['B', 2]); FDQuery1.ExecSQL(strInsert, ['C', 3]); FDQuery1.ExecSQL(strInsert, ['D', 4]); FDQuery1.Open('SELECT * FROM MyTable'); end; {用 ; 分割, 一次行插入} procedure TForm1.Button2Click(Sender: TObject); const strInsert = 'INSERT INTO MyTable(Name, Age) VALUES("%s", %d)'; var LStr: string; begin LStr := ''; LStr := LStr + Format(strInsert, ['AA', 11]) + ';'; LStr := LStr + Format(strInsert, ['BB', 22]) + ';'; LStr := LStr + Format(strInsert, ['CC', 33]) + ';'; LStr := LStr + Format(strInsert, ['DD', 44]) + ';'; LStr := LStr + 'SELECT * FROM MyTable'; FDQuery1.ExecSQL(LStr); FDQuery1.Open(); end; {使用 NextRecordSet 方法提取并执行所有命令} procedure TForm1.Button3Click(Sender: TObject); const strInsert = 'INSERT INTO MyTable(Name, Age) VALUES("%s", %d);'; begin FDQuery1.FetchOptions.AutoClose := False; //按说这个是必须要设置的, 但测试时不设置也可以 FDQuery1.SQL.Clear; FDQuery1.SQL.Add(Format(strInsert, ['AAA', 111])); FDQuery1.SQL.Add(Format(strInsert, ['BBB', 222])); FDQuery1.SQL.Add(Format(strInsert, ['CCC', 333])); FDQuery1.SQL.Add(Format(strInsert, ['DDD', 444])); FDQuery1.SQL.Add('SELECT * FROM MyTable'); FDQuery1.Execute(); FDQuery1.NextRecordSet; end; {使用 DML 数组参数} procedure TForm1.Button4Click(Sender: TObject); const strInsert = 'INSERT INTO MyTable(Name, Age) VALUES(:name, :age);'; begin FDQuery1.FetchOptions.AutoClose := False; // FDQuery1.SQL.Text := strInsert; FDQuery1.Params.ArraySize := 4; //准备把上面的语句执行 4 次 {分别设置 4 次的参数} FDQuery1.Params[0].AsStrings[0] := 'AAAA'; FDQuery1.Params[1].AsIntegers[0] := 1111; FDQuery1.Params[0].AsStrings[1] := 'BBBB'; FDQuery1.Params[1].AsIntegers[1] := 2222; FDQuery1.Params[0].AsStrings[2] := 'CCCC'; FDQuery1.Params[1].AsIntegers[2] := 3333; FDQuery1.Params[0].AsStrings[3] := 'DDDD'; FDQuery1.Params[1].AsIntegers[3] := 4444; FDQuery1.Execute(4, 0); //从 1 条开始执行 4 次 FDQuery1.SQL.Add('SELECT * FROM MyTable'); FDQuery1.NextRecordSet; end;
测试效果图:

另外, 还可以使用 FireDAC 扩展的 SQL Script(TFDScript), 它还能直接调用文件中的 SQL 指令.
分类:
数据库编程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2010-05-28 jQuery 练习[二]: 获取对象(3) - 根据属性、内容匹配, 还有表单元素匹配
2010-05-28 jQuery 练习[二]: 获取对象(2) - 定位子对象
2009-05-28 学习 SQL 语句 - Insert、Update、Delete
2009-05-28 学习 SQL 语句 - Select(9): 其他
2009-05-28 学习 SQL 语句 - Select(8): 分组条件
2009-05-28 学习 SQL 语句 - Select(7): 分组统计之 Avg()、Sum()、Max()、Min()、Count()
2009-05-28 学习 SQL 语句 - Select(6): 字段运算