序:
企业对管理精细化和多渠道市场营销的需求日渐增长,造就了行业与行业,组织与组织,人与人大量的信息数据频繁交互。传统企业需要充分利用现代化企业的管理意识,一切立足于数据信息所进行的管理方式将被广泛传递形成一种数字管理模式。随之而来的信息化、数字化、数据化、数智化的进程势不可挡。作为程序猿的我们就是要打造好的工具,帮助他们快速完成这个破茧成蝶的成长过程。这是这个时代赋予我们的使命!
边界
本方法是基于 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等相关内容。内容都是本人原创。如果给你带来帮助,码字不易还请多多点赞!如果需要引用请标记出处,感谢之至!