zoukankan      html  css  js  c++  java
  • FireDAC 下的 Sqlite [11]


    可把下面代码直接贴在空白窗体上, 以快速完成窗体设计:


    代码:
    {建立}
    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 指令.

  • 相关阅读:
    Atitit attilax要工作研究的要素 纪要 方案 趋势 方向 概念 理论
    Atitit 常见每日流程日程日常工作.docx v7 r8f
    Atitit it 互联网 软件牛人的博客列表
    Atitit 信息链(Information Chain)的概念理解 attilax总结
    Atitit 知识点的体系化 框架与方法 如何了解 看待xxx
    Atitit 聚合搜索多个微博 attilax总结
    Atitit 企业知识管理PKM与PIM
    Atitit 项目沟通管理 Atitit 沟通之道 attilax著.docx
    Atitit 项目管理软件 在线服务 attilax总结 1. 项目管理协作的历史 1 1.1. Worktile 406k 1 1.2. Teambition  584k in baidu
    Atitit.每周末总结 于每周一计划日程表 流程表 v8 import 上周遗漏日志补充 检查话费 检查流量情况 Crm问候 Crm表total and 问候
  • 原文地址:https://www.cnblogs.com/del/p/3758082.html
Copyright © 2011-2022 走看看