FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试

FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试,第1张

概述可把下面代码直接贴在空白窗体上, 以快速完成窗体设计: object DBGrid1: TDBGrid   Left = 0   Top = 0   Width = 265   Height = 338   Align = alLeft   DataSource = DataSource1   TabOrder = 0   TitleFont.Charset = DEFAULT_CHARSET   可把下面代码直接贴在空白窗体上,以快速完成窗体设计:
object DBGrID1: TDBGrID
left = 0
top = 0
WIDth = 265
Height = 338
Align = alleft
DataSource = DataSource1
Taborder = 0
TitleFont.Charset = DEFAulT_CHARSET
TitleFont.color = clWindowText
TitleFont.Height = -11
TitleFont.name = 'Tahoma'
TitleFont.Style = []
end
object button1: Tbutton
left = 280
top = 24
WIDth = 75
Height = 25
Caption = 'button1'
Taborder = 1
OnClick = button1Click
end
object button2: Tbutton
left = 280
top = 64
WIDth = 75
Height = 25
Caption = 'button2'
Taborder = 2
OnClick = button2Click
end
object button3: Tbutton
left = 280
top = 104
WIDth = 75
Height = 25
Caption = 'button3'
Taborder = 3
OnClick = button3Click
end
object button4: Tbutton
left = 280
top = 144
WIDth = 75
Height = 25
Caption = 'button4'
Taborder = 4
OnClick = button4Click
end
object FDConnection1: TFDConnection
left = 66
top = 48
end
object FDPhyssqliteDriverlink1: TFDPhyssqliteDriverlink
left = 167
top = 48
end
object FDGUIxWaitCursor1: TFDGUIxWaitCursor
ProvIDer = 'Forms'
left = 164
top = 120
end
object FDquery1: TFDquery
Connection = FDConnection1
left = 56
top = 192
end
object DataSource1: TDataSource
DataSet = FDquery1
left = 60
top = 120
end

代码:
{建立}procedure TForm1.FormCreate(Sender: TObject);const strtable = 'CREATE table Mytable(ID integer PRIMARY KEY autoINCREMENT,name string(10),Age integer)'; //ID(自增),name,Agebegin 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,%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);';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 指令. 总结

以上是内存溢出为你收集整理的FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试全部内容,希望文章能够帮你解决FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1170186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存