SQLite3框架源代码下载 


01]基本设置FDQuery1.Connection  一定要写 满 绝对路径
02]执行查询SQL语句
03]执行 非查询SQL语句
04]返回所有数据 和所有 列名, 生成网页HTML格式,方便导出数据

05]FireDAC中FDQuery1中SQL语句中的参数使用

06]如何用DBGrid1一直显示数据库里的数据

07]FDquery1可在设计的时候,直接执行SQL语句

08]导出为CSV格式

09FireDAC之FDQuery1.Filter := 'id >= 2';学习

10]Fdquery1 的While遍历


01]基本设置FDQuery1.Connection

 

   放一个  FDPhysSQLiteDriverLink1到ServerModule上

// uses FireDAC.Phys.SQLite 之后, 可不用添加 TFDPhysSQLiteDriverLink           //访问SQLite  文件数据库
  FDQuery1.Connection := UniMainModule.FDConnection1;

  UniMainModule.FDConnection1.LoginPrompt := false; // 取消登录提示框
  UniMainModule.FDConnection1.Open('DriverID=SQLite;Database=test1.Sqlite3');

02]执行查询SQL语句

FDQuery1.Open('select id,name,info from atb');

03]执行 非查询SQL语句

FDQuery1.ExecSQL('INSERT INTO atb VALUES( (select max(id)+1 from atb),''aName'',''aInfo'')');

 


04]返回所有数据 和所有 列名, 生成网页格式,方便导出数据

   procedure UniDBGridToHTML(aFDquery :TFDQuery;aHTMLFileName:string);
var
  aHTMLtext: TstringList;
   j: integer;
begin
  aHTMLtext := TstringList.Create;
  aHTMLtext.Add
    ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  ' +
    '<html>   <head>    <title></title>   </head>  ' +
    '  <body>  <table border=".5pt solid windowtext;"; > ' +
    ' <col width=72 span=3 style='' width:54pt''>');

  aHTMLtext.Add(' <tr > ');
    for j := 1 to aFDquery.FieldCount do
    begin
      aHTMLtext.Add('<td>');
      aHTMLtext.Add(aFDquery.Fields.FieldByNumber(j).FieldName);   //  列 名
      aHTMLtext.Add('</td>');
    end;
  aHTMLtext.Add(' </tr> ');

  aFDquery.First;
  while not(aFDquery.Eof) do
  begin
    aHTMLtext.Add(' <tr  > ');

    for j := 1 to aFDquery.FieldCount do
    begin
      aHTMLtext.Add('<td>');
      aHTMLtext.Add(aFDquery.Fields.FieldByNumber(j).AsString);   //  所有 值
      aHTMLtext.Add('</td>');
    end;
    aHTMLtext.Add(' </tr> ');

    aFDquery.Next;
  end;

  aHTMLtext.Add('</table>  </body>  </html> ');
  aHTMLtext.SaveToFile(aHTMLFileName);
  aHTMLtext.Free;
end;
procedure TMainForm.UniButton1Click(Sender: TObject);
begin
  UniDBGridToHTML(FDquery1,'aa.html');//调用
end;

05]FireDAC中FDQuery1中SQL语句中的参数使用

双击FDQuery1,SQL语句中 以冒号开头就是参数,后面就是参数名

 然后第二Parameters页,左边列表就有就该参数名,然后给参数的DataType,Value值,再点Execute,就可看到查询结果。

 其后 将上面的 界面,变成代码实现即可

procedure TForm13.Button1Click(Sender: TObject);
begin
 FDQuery1.SQL.Text:='select * from  userinfo where username like :aname';
  FDQuery1.ParamByName('aname').DataType :=ftString;
  FDQuery1.ParamByName('aname').Value:='%s%';
 FDQuery1.Open();
end;

 多个参数写法

FDconnection1.ExecSQL('insert into Categories(CategoryName, Description, Picture) ' +
                 'values(:N, :D, :P)', ['New category', 'New description', $0334]);
FDQuery1.Refresh;

 参数的用途:

4主从表.把FDQuery2的属性MasterSource设置

方便为FireDAC中官方SQL语句增insert


07]FDquery1可在设计的时候,直接执行SQL语句

前提是FDConnection1已连接,双击FDQuery1

FDquery1Active无所谓true,false 

 08]导出为CSV格式

procedure DBGridToCSV(aFDquery: TFDQuery; aCSVFileName: string); // CSV格式
var
  aCSVtext: TstringList;
  i, j: integer;
  tempStr: string;
begin
aCSVtext := TstringList.Create;

tempStr := ''; //第一行所有 的列名
for j := aFDquery.FieldCount downto 1 do
tempStr := aFDquery.Fields.FieldByNumber(j).FieldName + ',' + tempStr;
tempStr := Copy(tempStr, 0, Length(tempStr) - 1); // 去掉最后一个 ,
aCSVtext.Add(tempStr);

aFDquery.First; //所有 数据 导出
while not(aFDquery.Eof) do begin
tempStr := '';
for j := aFDquery.FieldCount downto 1 do begin

if ansiPos(',',aFDquery.Fields.FieldByNumber(j).AsString)>0 then
tempStr:='"'+ aFDquery.Fields.FieldByNumber(j).AsString +'"' + ',' + tempStr //如果单元格内点逗,整个单元外加双引号
else tempStr := aFDquery.Fields.FieldByNumber(j).AsString + ',' + tempStr;
end;
tempStr := Copy(tempStr, 0, Length(tempStr) - 1); // 去掉最后一个 ,
aCSVtext.Add(tempStr);
aFDquery.Next;
end;

  aCSVtext.SaveToFile(aCSVFileName);
  aCSVtext.Free;
end;

 09]FireDAC之FDQuery1.Filter := 'id >= 2';学习

procedure TMainForm.UniButton5Click(Sender: TObject);
begin
  UniMainModule.FDQuery1.SQL.Text :='SELECT * FROM user ';
  UniMainModule.FDQuery1.Open();
UniMainModule.FDQuery1.Filter := 'id >= 2';
UniMainModule.FDQuery1.Filtered := True;
if UniMainModule.FDQuery1.FindFirst then
   repeat
      unilistbox1.Items.Add(UniMainModule.FDQuery1.Fields.Fields[1].AsString) ;
   until not UniMainModule.FDQuery1.FindNext
end;

 10]Fdquery1 的While遍历

var
  i: Integer;
begin
  FDQuery1.Open('SELECT * FROM your_table');
  while not FDQuery1.Eof do  
  begin
    // 处理每一行
    for i := 0 to FDQuery1.FieldCount - 1 do
    begin
      // 输出字段名和值
      ShowMessage(FDQuery1.Fields[i].FieldName + ': ' + FDQuery1.Fields[i].AsString);
    end;
    FDQuery1.Next;  
  end;
  FDQuery1.Close;
end;