mysql 密码有 字符串_MySQL连接提示输入密码,即使这是在连接字符串中

这个看起来很奇怪.

我有一个Pascal单元连接到MySQL数据库

unit u_MySQLConnection;

interface

uses

ADODB,

AnsiStrings,

Generics.Collections,

SysUtils,

DB

;

type

TMySQLConnection = class

strict private

mysqlCon : TADOConnection;

public

function Connect:boolean;

destructor Destroy;

end;

var

MySQLConnection : TMySQLConnection;

implementation

function TMySQLConnection.Connect:boolean;

var

success : boolean;

begin

success := true;

try

if NOT (mysqlCon = nil)

then mysqlCon.Destroy;

mysqlCon := TADOConnection.Create(nil);

mysqlCon.ConnectionString := 'DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=database; UID=root; PASSWORD=password;OPTION=3;';

except

success := false;

end;

Result := success;

end;

destructor TMySQLConnection.Destroy;

begin

FreeAndNil(mysqlCon);

inherited;

end;

end.

当我尝试连接时

MySQLConnection := TMySQLConnection.Create;

try

MySQLConnection.Connect;

finally

MySQLConnection.Destroy;

end;

即使密码已经在连接字符串中,我也会出现密码提示对话框.如果我在此提示中输入用户名和密码,则其他一切正常.

这里的事情有点奇怪:

当我将数据库连接命令移动到主.dpr文件中时,如图所示

program DieselBatch;

uses

Vcl.Forms,

u_MySQLConnection in '..\src\u_MySQLConnection.pas'

(*,

frm_About in '..\src\frm_About.pas' {frmAbout},

frm_AnalystDetails in '..\src\frm_AnalystDetails.pas' {frmAnalystDetails},

frm_Batch in '..\src\frm_Batch.pas' {frmBatch},

frm_ConfirmResultsChanged in '..\src\frm_ConfirmResultsChanged.pas' {frmConfirmResultsChanged},

frm_DebugSample in '..\src\frm_DebugSample.pas' {frmDebugSample},

frm_FlashManualEntry in '..\src\frm_FlashManualEntry.pas' {frmFlashEntry},

frm_Main in '..\src\frm_Main.pas' {frmMain},

frm_SampleComment in '..\src\frm_SampleComment.pas' {frmSampleComment},

frm_SelectAnalystForResult in '..\src\frm_SelectAnalystForResult.pas' {frmSelectAnalystForResult},

u_Data in '..\src\u_Data.pas',

u_MicroCheck in '..\src\u_MicroCheck.pas',

u_Undo in '..\src\u_Undo.pas'

*)

;

{$R *.res}

var

MySQLConnection : TMySQLConnection;

begin

MySQLConnection := TMySQLConnection.Create;

try

MySQLConnection.Connect;

finally

MySQLConnection.Destroy;

end;

然后,只要这些单位被注释掉,就不会出现密码提示.

当我再次取消注释上述单元时,问题再次出现.

其中一些单位确实使用ADODB和DB,但我看不出单位的存在会如何影响MySQLConnection单位的行为….

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值