最终答案:
这不是Delphi的问题,只是配置问题。
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
作为用户
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
我做了那件事,现在错误是
Unknown MySql Server host "localhost"
编辑2:此代码以前在开发PC上工作,但在其他PC上不工作。而且,现在在新安装后,它不能在开发机器上工作。也许更多的是一个配置问题而不是代码,但是有人有一些代码我可以比较,以防万一?