我想用TADOConnection连接到局域网内另一台电脑上的SQL Server 2000,在DELPHI IDE界面配置后可正常访问。然后我将ConnectionString中所有参数均保存在INI文件中,读取后在本机可正常访问(用ShowMessage验证和IDE中设置的ConnectionString一样),可是在局域网的另一台机器上用时出现“[DBNETLIB][ConnectionOpen(Connect()).]SQL Server不存在或拒绝访问]”。以下是源代码procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
MyIniFile: TIniFile;
sConnectionString: String;
begin
//打开配置文件
MyIniFile := TIniFile.Create(AppPathName+'INI\NWP.INI');
try
sConnectionString:= 'Provider='+MyIniFile.ReadString('Database','Provider', 'SQLOLEDB.1');
sConnectionString:= sConnectionString+';Password='+MyIniFile.ReadString('Database','Password', 'abc123');
sConnectionString:= sConnectionString+';Persist Security Info='+MyIniFile.ReadString('Database','Persist Security Info', 'True');
sConnectionString:= sConnectionString+';User ID='+MyIniFile.ReadString('Database','User ID', 'nwp');
sConnectionString:= sConnectionString+';Initial Catalog='+MyIniFile.ReadString('Database','Initial Catalog', 'GLNWP');
sConnectionString:= sConnectionString+';Data Source='+MyIniFile.ReadString('Database','Data Source', '127.0.0.1');
sqlGPersonInfo:=sConnectionString;
ADOConnectionHyzjgl.ConnectionString:=sConnectionString;
ADOConnectionHyzjgl.CommandTimeout:=5;
ADOConnectionHyzjgl.Open;
finally
MyIniFile.Free;
end;
end;
var
MyIniFile: TIniFile;
sConnectionString: String;
begin
//打开配置文件
MyIniFile := TIniFile.Create(AppPathName+'INI\NWP.INI');
try
sConnectionString:= 'Provider='+MyIniFile.ReadString('Database','Provider', 'SQLOLEDB.1');
sConnectionString:= sConnectionString+';Password='+MyIniFile.ReadString('Database','Password', 'abc123');
sConnectionString:= sConnectionString+';Persist Security Info='+MyIniFile.ReadString('Database','Persist Security Info', 'True');
sConnectionString:= sConnectionString+';User ID='+MyIniFile.ReadString('Database','User ID', 'nwp');
sConnectionString:= sConnectionString+';Initial Catalog='+MyIniFile.ReadString('Database','Initial Catalog', 'GLNWP');
sConnectionString:= sConnectionString+';Data Source='+MyIniFile.ReadString('Database','Data Source', '127.0.0.1');
sqlGPersonInfo:=sConnectionString;
ADOConnectionHyzjgl.ConnectionString:=sConnectionString;
ADOConnectionHyzjgl.CommandTimeout:=5;
ADOConnectionHyzjgl.Open;
finally
MyIniFile.Free;
end;
end;
这是从IDE中Copy下来的,INI文件中已配置成SQL Server所在的机器名了(也试过用地址方式)
另外,你还可以对AdoConnectionString配置一下服务器看,你用ADO,可以不设ODBC的。
还建议你把这些信息写到注册表中去,INI文件太老了。
问题已解决,谢谢三位。