FireDac 数据库连接MySql

1、加入三个组件:

TFdconnection 、 TFdQuery 、 TFdphysMysqlDriverLink

双击 con1 配置好数据库连接

2、创建软件的时候指定DLL路径

fdphysmysqldrvrlnk1.VendorLib := ExtractFilePath(application.ExeName) + 'jj\libmySQL.dll';

3、连接数据库、断开数据库

//连接数据库
  form1.con1.Connected := True;
 //断开数据库
  form1.con1.Connected := False;

4、执行SQL语句

try
      sql := 'insert into niu_ip (ip) values (''' + ttIP[i] + '''); ';
      Form1.fdqry1.SQL.Clear; //一定先清理再添加,否则执行报错后就不清理了
      Form1.fdqry1.SQL.Add(sql);
      Form1.fdqry1.ExecSQL;
      j := j + 1;
    except
      on e: Exception do
        ierror := ierror + 1;
       // Form1.mmLog.Lines.Add('【' + sql + '】' + e.Message);
    end;

所用到的DLL文件 X64和X86都有:

下载:https://www.lanzoux.com/iqnF0diwo9g 密码:6qqb

报错信息:

[FireDAC][Phys][MySQL]-326. Cannot perform the action, because the previous action is in progress

原因是SQL还在执行当中,我们就给他设置SQL语句了,解决办法,在临界区中并且在query组件的状态不是csExecuting正在执行的时候

try
        FRWSync.BeginWrite; //执行临界写数据代码
          //如果是忙碌状态就休息半秒
        while Form1.fdqry1.Command.State = csExecuting do
        begin
          jjSleep(100);
        end;
        Form1.fdqry1.SQL.Text := sql;
        Form1.fdqry1.ExecSQL;
      finally
        FRWSync.EndWrite;
      end;

以下是一些参数注释:

General

程序员可以使用ResourceOptions.CmdExecMode属性在四种操作模式之间进行选择:

ModeDescription
amBlocking阻塞调用线程和GUI,直到操作完成为止
amNonBlocking调用线程被阻塞,直到操作完成为止。 GUI没有被阻止。
amCancelDialog调用线程和GUI被阻塞,直到操作完成。 FireDAC显示一个对话框,允许取消操作
amAsync调用线程和GUI没有被阻止。 被调用的方法立即返回

应用程序检查TFDCommand.State或TFDAdaptedDataSet.Command.State是否为操作状态:

StatusDescription
csInactive未准备命令。
csPrepared已准备命令。 结果集不可访问。
csExecuting命令执行正在进行中。
csOpen命令执行完成。 结果集是可访问的,尚未完全获取.
csFetching结果集提取正在进行中.
csAborting正在执行命令中止.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值