FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试
来源:互联网 发布:e盾网络验证是什么 编辑:程序博客网 时间:2024/04/29 18:25
可把下面代码直接贴在空白窗体上, 以快速完成窗体设计:
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
代码:
测试效果图:
另外, 还可以使用 FireDAC 扩展的 SQL Script(TFDScript), 它还能直接调用文件中的 SQL 指令.
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, 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 指令.
0 0
- FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试
- FireDAC 下的 Sqlite [9] - 关于排序
- FireDAC 下的 Sqlite [9] - 关于排序
- FireDAC 下的 Sqlite [1] - 前言
- FireDAC 下的 Sqlite [4] - 创建数据库
- FireDAC 下的 Sqlite [6] - 加密
- FireDAC 下的 Sqlite [8] - 自定义函数
- FireDAC 下的 Sqlite 创建数据库
- FireDAC 下的 Sqlite [3] - 获取数据库的基本信息
- FireDAC 下的 Sqlite [5] - 数据的插入、更新、删除
- FireDAC 下的 Sqlite [2] - 第一个例子
- FireDAC 下的 Sqlite [7] - 备份、优化、事务(Transaction)
- FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索
- FireDAC 下的 Sqlite [12] - 备忘录(草草结束这个话题了)
- SQLite常见的SQL命令
- C#实现对SQLite数据库的数据批量提交
- 使用FireDAC打开SQLite数据库韩文、阿拉伯文出现乱码的处理方法
- SQLite的原子提交
- 第八章习题汇总
- WinForm实现鼠标悬停显示控件
- Theano2.1.7-基础知识之设置的配置和编译模式
- 算法
- IOS9新增UIStackView
- FireDAC 下的 Sqlite [11] - 关于批量提交 SQL 命令的测试
- ppt倒计时器制作方法
- 与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。 【转载】
- html 垂直对齐
- java回调函数应用实例
- Codeforces Round #307 (Div. 2) C. GukiZ hates Boxes (贪心 + 二分)
- FireDAC 下的 Sqlite [12] - 备忘录(草草结束这个话题了)
- Solr-1-介绍
- 第三题