序:

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

边界

        本方法是基于 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 的,如果同学们是使用其他版本,那么这个版本号也会有所变动!

delphi2010连接mysql数据库 delphi链接mysql_c#

开始:

建立 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等相关内容。内容都是本人原创。如果给你带来帮助,码字不易还请多多点赞!如果需要引用请标记出处,感谢之至!