FireDAC 和 Sqlite 三:数据的操作

0051.jpg


Firedac是Delphi开发跨平台的数据库应用程序的通用数据访问组件,同样适用于C++ Builder和FreePascal。这里是Firedac操作Sqlite的学习笔记。文中代码在Delphi 11中编译通过。

先将“FireDAC 和 Sqlite 一:基本控件和设置”一篇中提到的常用控件加入Form,并做好关联。


一. 数据的插入

procedure TForm1.Button1Click(Sender: TObject);
const
  Table:string = 'CREATE TABLE MyTable(Id Integer PRIMARY KEY AUTOINCREMENT, Name String(10), Age Byte)';
  //Id, Name, Age 三个字段
  //Integer PRIMARY KEY AUTOINCREMENT: 自增字段
  
  Insert:string = 'INSERT INTO MyTable(Name, Age) VALUES(:name, :age)';
begin
  //先创建表
  FDConnection1.ExecSQL(Table);
  
  //方法一
  FDQuery1.Open('SELECT * FROM MyTable');
  FDConnection1.ExecSQL(Insert, ['AAA', 11]);
  FDConnection1.ExecSQL(Insert, ['BBB', 22]);
  FDConnection1.ExecSQL(Insert, ['CCC', 33]);
  FDQuery1.Refresh;//如果是修改打开的表,改完只要刷新即可
  
  //方法二
  FDQuery1.SQL.Clear;
  FDQuery1.SQL.Text :=Insert;
  FDQuery1.ParamByName('Name').AsString := 'FFF';
  FDQuery1.ParamByName('age').AsByte := 66;
  FDQuery1.ExecSQL;
  FDQuery1.Open('SELECT * FROM MyTable');//如果是修改打开的表,改完要重新打开
end;


二. 数据的

procedure TForm1.Button2Click(Sender: TObject);
begin
  FDConnection1.ExecSQL('UPDATE MyTable SET Age=:a WHERE Name=:n', [Random(100), 'AAA']);
  FDQuery1.Refresh;
end;


三. 数据的删除

procedure TForm1.Button3Click(Sender: TObject);
begin
  FDConnection1.ExecSQL('DELETE FROM MyTable WHERE Age>33');
  FDQuery1.Refresh;
end;


四. 数据的查询

procedure TForm1.Button4Click(Sender: TObject);
var
  V: Variant;
begin
  //方法一:
  //通过年龄查名字
  V := FDConnection1.ExecSQLScalar('SELECT Name FROM MyTable WHERE Age = :x', ['22']);
  ShowMessage(V);
  //通过名字查年龄
  V := FDConnection1.ExecSQLScalar('SELECT Age FROM MyTable WHERE Name = :x', ['FFF']);
  ShowMessage(V);
  
  //方法二:
  //通过年龄查名字
  FDQuery1.SQL.Clear;
  FDQuery1.SQL.Text := 'SELECT * FROM MyTable WHERE Age = :x';
  FDQuery1.ParamByName('x').AsInteger := 22;
  FDQuery1.Open();
  Memo1.Text:=FDQuery1.FieldByName('Name').AsString;  
end;


五. 获取Insert的自增ID

procedure TForm1.Button11Click(Sender: TObject);
begin
    //方法一:
    showmessage( FDConnection1.GetLastAutoGenValue('MyTable') );
    
    //方法二:
    FDQuery1.Open('SELECT last_insert_rowid()');
    showmessage(FDQuery1.Fields[0].Value);
    FDQuery1.Open('SELECT * FROM MyTable');//如果是查询打开的表,查完后要重新打开
end;


标签:DelphiFireDAC

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=69