Delphi 通过 TADO 单元连接 Mysql 数据库的方法

序:

        企业对管理精细化和多渠道市场营销的需求日渐增长,造就了行业与行业,组织与组织,人与人大量的信息数据频繁交互。传统企业需要充分利用现代化企业的管理意识,一切立足于数据信息所进行的管理方式将被广泛传递形成一种数字管理模式。随之而来的信息化、数字化、数据化、数智化的进程势不可挡。作为程序猿的我们就是要打造好的工具,帮助他们快速完成这个破茧成蝶的成长过程。这是这个时代赋予我们的使命!

边界

        本方法是基于 Windows 平台下的 Delphi 开发项目。使用了 Delphi TADO 组件,利用系统 ODBC 来连接 Mysql 数据库 。Mysql ODBC 安装包在附件中。

准备:

        安装包连接:MySQL :: Download Connector/ODBC 选择你合适的版本

        ADODB 的关键 主要是 ConnectionString 的配置。其中最主要的是  DRIVER={MySQL ODBC 8.0 ANSI Driver};  这个是 Mysql ODBC的系统驱动,安装包安装后系统会增加 MySQL ODBC 8.0 ANSI Driver 的驱动接口。因为我 安装的是 Mysql 8.0 所以 这里就是 8.0 的,如果同学们是使用其他版本,那么这个版本号也会有所变动!

开始:

建立 Mysql Unit 类

        因为数据库的调用异常频繁,所以我特意封装了一个类,方便程序调用。我们首先需要建立一个 Unit,我取名叫 mySqlUnit ,代码可以直接复制使用。

注:关键引用 Data.DB 和 Data.Win.ADODB

代码如下:

unit mySqlUnit;

interface

uses
   SysUtils, StdCtrls, Classes, Variants, Data.DB, Data.Win.ADODB;

type
  TMySqlConn = class(TObject)
  private
    _PORT          : string;
    _HOST          : string;
    _DATABASE      : string;
    _USER_NAME     : string;
    _PASSWORD      : string;
    _SQLQuery      : TADOQuery;
    _SQLConnection : TADOConnection;

    procedure Set_PORT(const Value: string);
    procedure Set_HOST(const Value: string);
    procedure Set_DATABASE (const Value: string);
    procedure Set_USER_NAME(const Value: string);
    procedure Set_PASSWORD (const Value: string);
    function  MySQLConnection: TADOConnection;

  public
    constructor Create; overload;
    property Post:string write Set_PORT;
    property Host:string write Set_HOST;
    property Database:string write Set_DATABASE;
    property User_name:string write Set_USER_NAME;
    property Password:string write Set_PASSWORD;

    function ExecSQL(const SQL:string): Integer;
    function Query(const SQL:string): TADOQuery;
    procedure MySQLClose;
  end;

implementation

  //初始化
  constructor TMySqlConn.Create;
  begin
    _HOST := '127.0.0.1';     // 对应你自己的 数据库服务器
    _PORT := '3306';           // 访问数据库服务器的端口,默认是 3306 
    _USER_NAME := 'root';      // 连接数据库 的用户名
    _PASSWORD := '123456';     // 访问数据库的 密码
    _DATABASE := 'tableName';  // 表名
  end;

  //执行 SQL 语句 INSERT , UPDATE , DELETE  返回影响行数
  function TMySqlConn.ExecSQL(const SQL:string):Integer;
  begin
    if not Assigned(_SQLQuery) then
      _SQLQuery := TADOQuery.Create(nil);
    with _SQLQuery do
    begin
      Close;
      SQL.Clear;
      Connection := MySQLConnection;
    end;
    try
      _SQLQuery.SQL.Add(SQL);
      result := _SQLQuery.ExecSQL;
    except on E: Exception do
      raise Exception.Create('SQL语句执行失败 :'+E.Message);
    end;
    MySQLClose;
  end;

  //执行 SQL 语句 Select 返回 数据集
  function TMySqlConn.Query(const SQL:string): TADOQuery;
  begin
    if not Assigned(_SQLQuery) then
       _SQLQuery := TADOQuery.Create(nil);
    with _SQLQuery do
    begin
      Close;
      SQL.Clear;
      Connection := MySQLConnection;
    end;
    try
      _SQLQuery.SQL.Add(SQL);
      _SQLQuery.Open;
      _SQLQuery.Active := true;
      result := _SQLQuery;
    except on E: Exception do
      raise Exception.Create('SQL语句查询失败 :'+E.Message);
    end;
  end;

  //关闭连接
  procedure TMySqlConn.MySQLClose;
  begin
    _SQLQuery.Close;
    _SQLConnection.Close;
  end;

  //连接MySQL 返回 TSQLConnection
  function TMySqlConn.MySQLConnection: TADOConnection;
  begin
    if not Assigned(_SQLConnection) then
       _SQLConnection := TADOConnection.Create(nil);
    with _SQLConnection do
      begin
        Close;
        ConnectionString := 'DRIVER={MySQL ODBC 8.0 ANSI Driver}; '+
            'SERVER = '+ _HOST +'; '+
            'PORT =  '+ _PORT +'; '+
            'DATABASE =  '+ _DATABASE +'; '+
            'UID =  '+ _USER_NAME +'; '+
            'PASSWORD =  '+ _PASSWORD +';'+
            'OPTION = 3;';
      end;
    try
      _SQLConnection.Open;
      _SQLConnection.Connected := true;
      result := _SQLConnection;
    except on E: Exception do
      raise Exception.Create('数据库连接错误:'+E.Message);
    end;
  end;


  procedure TMySqlConn.Set_PORT(const Value: string);
  begin
    if Value<>'' then
       _PORT := Value
  end;

  procedure TMySqlConn.Set_HOST (const Value: string);
  begin
    if Value<>'' then
       _HOST := Value
  end;

  procedure TMySqlConn.Set_DATABASE (const Value: string);
  begin
    _DATABASE := Value
  end;

  procedure TMySqlConn.Set_USER_NAME (const Value: string);
  begin
    _USER_NAME := Value;
  end;

  procedure TMySqlConn.Set_PASSWORD (const Value: string);
  begin
    _PASSWORD := Value;
  end;

end.

说明

我定义了几个数据库连接的 SET 过程,方便在调用的过程中也可以使用参数。

调用例子

uses mysqlUnit;  // 需要引用我封装的单元
...
...

// 代码块 可以放在 按钮 或者 过程当中
var
    MySqlConn : TMySqlConn;
    SQLQuery : TADOQuery;
begin
    MySqlConn :=  TMySqlConn.Create; // 定义自己的连接
    MySqlConn.User_name := 'root';    // 如果带参数,就不会使用 封装单元里面的 默认参数了
    MySqlConn.Password  := 'root';
    MySqlConn.Database  := 'tableName';
    SQLQuery := TADOQuery.Create(nil);
    SQLQuery := MySqlConn.Query('select * from user');
    while not SQLQuery.Eof do
    begin
        ShowMessage('姓名:'+VarToStr(SQLQuery.FieldValues['name']);
        SQLQuery.Next;
    end;
    MySqlConn.MySQLClose;
    MySqlConn.Free;
end;

以上代码可以直接复制使用,我在 Windows 版本 10 、 Delphi 版本10 、Mysql 版本 8.0 的环境下使用正常。如果有同学有其他的方法也请留言区留言,我们一起学习成长。

本人会不定期的更新文章内容,内容含盖 Delphi,Java,Vue等相关内容。内容都是本人原创。如果给你带来帮助,码字不易还请多多点赞!如果需要引用请标记出处,感谢之至!

笔者:小飞侠

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
温控阀是一种常见的智能家居设备,其主要功能是通过控制水流来实现室内温度的控制。下面是一些温控阀的竞品功能分析举例: 1. Nest温控器 - Nest温控器是一款功能丰富的智能温度控制器,可以通过Nest应用程序进行控制。它具有智能自学习功能,可以根据用户的行为和喜好自动调整温度,还可以通过手机应用程序进行远程控制,具有节能和便利性。 2. Honeywell温度控制器 - Honeywell温度控制器是一款智能温度控制器,可以通过手机应用程序进行控制。它具有自适应学习功能,可以根据用户的行为和喜好自动调整温度,还可以通过语音控制和Alexa、Google Assistant等智能音箱进行控制,具有智能化和便利性。 3. Tado智能温控器 - Tado智能温控器是一款智能温度控制器,可以通过手机应用程序进行控制。它具有自适应温度控制功能,可以根据用户的行为和喜好自动调整温度,还可以通过地理位置监测和人体感应控制,具有智能化和便利性。 4. Ecobee智能温控器 - Ecobee智能温控器是一款智能温度控制器,可以通过手机应用程序进行控制。它具有智能自适应功能,可以根据用户的行为和喜好自动调整温度,还可以通过语音控制和Alexa、Google Assistant等智能音箱进行控制,具有智能化和便利性。 这些温控阀的功能各有特点,但都具有智能化、便利性和节能等优点,可以满足不同用户的需求和喜好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

闪亮小飞侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值