【发布时间】:2010-08-30 12:49:48
【问题描述】:
最终答案:
这不是 Delphi 问题,只是配置问题。
我使用 Xampp 来提供 MySql 服务器。
C:\xampp\mysql\bin>mysql.exe --version
mysql.exe Ver 14.14 Distrib 5.1.41, for Win32 (ia32)
所以,正确的连接字符串是
'Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=mysql;User=root; Password=;Option=3;'
(别忘了加载the MySql ODBC 5.1 driver!
短代码:
procedure TForm1.Button1Click(Sender: TObject);
var AdoConnection : TAdoConnection;
DataBase : String;
begin
Try
AdoConnection := TADOConnection.Create(nil);
if AdoConnection.Connected then // already connected?
begin
MessageDlg('Already connected', mtInformation, [mbOK], 0);
Exit;
end;
begin
DataBase := 'mysql';
AdoConnection.LoginPrompt:=False;//dont ask for the login parameters
AdoConnection.ConnectionString := 'Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=' + Database + ';User=root; Password=;Option=3;';
AdoConnection.Connected := True; //open the connection
MessageDlg('Connected to databse "' + DataBase + '".', mtInformation, [mbOK], 0);
end;
Except
On E: Exception do
begin
MessageDlg('Cannot connect to databse "' + DataBase + '"!.' + #13 + #10 + 'Please report this problem (is MySql running?)', mtError, [mbOK], 0);
end;
end;
end;
我发现了一些旧代码,并试图弄清楚。
这里有一些代码可以尝试默认 MySql d/b 调用 mysql 作为用户 root 没有密码..
const MYSQL_CONNECT_STRING_FROM_DELPHI =
'Driver={MySQL ODBC 3.51 Driver};Server=%s;Database=%s;User=%s; Password=%s;Option=3;';
var AdoConnection : TAdoConnection;
AdoConnection.ConnectionString :=
Format(MYSQL_CONNECT_STRING_FROM_DELPHI,['localhost',DataBase,'root','']);
AdoConnection.Connected := True;
(我本可以使用 TADOCommand,但更喜欢在我的代码中只使用 TAdoConnection)
当我运行它时,我得到ELoException [Microsoft][ODBC Driver manager] Data source name not found and no default driver specified。
我最近重新安装了 windows 和 delphi 7。我可能忘记安装其他东西,还是代码有问题?
编辑/更新:
我刚刚意识到我需要从http://dev.mysql.com/downloads/mirror.php?id=367506 获取 MySql ODBC 连接器
我这样做了,现在错误是 Unknown MySql Server host "localhost"(我有 Xampp 运行 Apache 服务器,所以 localhost 应该没问题)
编辑 2:此代码以前可以在开发 PC 上运行,但不能在另一台 PC 上运行。而且,现在全新安装后,它在开发机器上不起作用。也许更多的是配置问题而不是代码,但是有没有人有一些我可以比较的代码,以防万一?
【问题讨论】:
-
我总是使用connectionstrings.com 来获取我正在创建的连接字符串的模板。
-
+1 谢谢。看起来我使用了正确的字符串,所以我猜问题出在其他地方。