用户名:  密码:   
您当前的位置:首页 > 程序设计 >  Delphi > 

FDQuery控件常用操作

上次修改时间: 2024-09-11 18:27:46      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\Delphi语言\常用控件之数据库控件与操作相关\      下一页

FDConnection1与FDQuery控件的使用

//判断数据库能否正常连接
procedure TMainfr.Button1Click(Sender: TObject);
begin
  fcon1.Params.Clear; // 清除之前的参数设置,确保没有重复或冲突的参数
  fcon1.Params.DriverID := 'MySQL';
  fcon1.Params.Add('Server='+trim(edit1.Text));//  fcon1.Params.Add('Server=localhost');

  fcon1.Params.Add('Port='+trim(edit2.Text)); //默认端口可省略这行
  fcon1.Params.Database := trim(edit3.Text);
  fcon1.Params.UserName := trim(edit4.Text);
  fcon1.Params.Password := trim(edit5.Text);
  fcon1.Params.Add('CharacterSet=gbk');
  fcon1.Params.Add('ConnectTimeout=5');  // 设置连接超时时间为10秒

  FDPhysMySQLDriverLink1.VendorLib := 'libmysql.dll'; //  FDPhysMySQLDriverLink1.VendorLib := '.\..\..\libmysql.dll';

  try
    fcon1.Open();
    Label6.Caption:='连接数据库成功';
  except on E: Exception do
    Label6.Caption:='连接数据库失败'+e.Message;
  end;

//使用FDquery控件查询mysql数据使用配合DataSouce并输出到DBGRid
  if fcon1.Connected then fcon1.Close;
end;

  if FDQuery1.active<>True then
  begin
  FDQuery1.Connection := fcon1;
  FDQuery1.SQL.Add('select * from ct_txthtml');

  DataSource1.DataSet := FDQuery1;
  DBGrid1.DataSource := DataSource1;
  try
    fcon1.Open();//和下面一句是同样的效果
//    FDConnection1.Connected := True;
    FDQuery1.Active := True;
    DBGrid1.Columns[0].Width:=50;
    DBGrid1.Columns[1].Width:=50;
    DBGrid1.Columns[2].Width:=450;
    DBGrid1.Columns[3].Width:=450;
  except on E: Exception do
    ShowMessage(e.Message);
    // ShowMessage 编译报错的话看看有没有声明 【uses Vcl.Dialogs;】
  end;
  end;

//执行指定的SQL语句
function runsql(con:TFDConnection; sql:string):string;
var
  q1: TFDQuery;
begin
 Result := '';
  q1 := TFDQuery.Create(nil);
  q1.Connection := con;
  try
    try
      q1.SQL.Text := sql;
      q1.ExecSQL; // 执行 SQL 语句插入数据
      Result :='1'
    except
      on E: Exception do
      begin
        Result := '清空数据失败:' + E.Message;
      end;
    end;
  finally
    q1.Free;
  end;
end;

//从数据库获取一些字段的值并输出到Sl列表
function GetDatabase(con: TFDConnection): TStringList;
var
  q1: TFDQuery;
  str: string;
begin
  // 创建 TStringList 对象并将其赋值给 Result
  Result := TStringList.Create;
  q1 := TFDQuery.Create(nil);
  try
    q1.Connection := con;  // 这里是修正为传入的 con 参数
    try
      q1.SQL.Text := 'select id, path, title, etime from ct_txthtml';
      q1.Open;  // 执行 SQL 语句

      // 读取数据并添加到 TStringList
      while not q1.Eof do
      begin
        str := q1.FieldByName('id').AsString;
        str := str + '@' + q1.FieldByName('path').AsString;
        ....
        Result.Add(str);  // 添加到 Result
        q1.Next;
      end;
    except
      // 如果发生异常,清理资源并重新抛出异常
      Result.Free;
    end;
  finally
    q1.Free;
  end;
end;

//使用FDquery循环上传多条数据
function updata(sl1: TStringList; Memo2: TMemo): TStringList;
var
  q1: TFDQuery;
begin
  q1 := TFDQuery.Create(nil);
  try
  q1.Connection := fcon1;
    for i := 0 to sl1.Count - 1 do
    begin
      q1.SQL.Text := 'INSERT INTO ct_txthtml (path, title, html, etime, ltime) VALUES (:path, :title, :html, :etime, :ltime)';
      q1.ParamByName('path').Value := ....;
      ......
      q1.ParamByName('ltime').Value := Now();
      q1.ExecSQL; // 执行 SQL 语句插入数据
    end;
  finally
    q1.Free;
  end;
end;