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 指令.

  • 相关阅读:
    Airodump-ng——Description
    kali 2.0 — WIFI——commands
    国外整理的一套在线渗透测试资源合集
    A collection of android security related resources.
    cBPM
    cBPM-android
    CentOS7 安装 gcc-4.9.0
    install Android Studio 1.3 —— VM Acceleration on Linux
    08嵌入式—蔺小会—初创公司需要怎样的管理模式?
    Nodejs开发框架Express4.x开发手记
  • 原文地址:https://www.cnblogs.com/yjhb/p/11804282.html
Copyright © 2011-2022 走看看