我的客户端没有安装sql server ,只是在远程的一个服务器上有需要的数据库,我现在想通过ado连接远程的服务器,怎么写。
我的连接语句是这样,老出错,请大家帮我看看 servername:=combobox1.Text;
databasename:=combobox2.Text;
ad:=edit1.Text;
password:=edit2.Text; form1.ADOConnection1.Close; connect:='Provider=SQLOLEDB.1;Password='''+password+''';Persist Security Info=True;User ID='''+ad+''';Initial Catalog='''+databasename+''';';
connect:=connect+'Data Source='''+servername+''';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID='''+servername+''';Use Encryption for Data=False;Tag with column collation when possible=False'; form1.ADOConnection1.ConnectionString:=connect; try
form1.ADOConnection1.Connected:=true;
showmessage('服务器连接成功!');
form_server.login:=true;
form_server.Close;
except
messagedlg('服务器连接失败,请检查网络设备是否正常工作,或输入信息是否有误!'+#13+#13+'系统将在2秒后自动关闭。',mtWarning,[mbOk],0);
sleep(2000);
//form_server.login:=true;
//form_server.Hide;
//application.Terminate;
//application.run;
form1.Close;
end;
我的连接语句是这样,老出错,请大家帮我看看 servername:=combobox1.Text;
databasename:=combobox2.Text;
ad:=edit1.Text;
password:=edit2.Text; form1.ADOConnection1.Close; connect:='Provider=SQLOLEDB.1;Password='''+password+''';Persist Security Info=True;User ID='''+ad+''';Initial Catalog='''+databasename+''';';
connect:=connect+'Data Source='''+servername+''';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID='''+servername+''';Use Encryption for Data=False;Tag with column collation when possible=False'; form1.ADOConnection1.ConnectionString:=connect; try
form1.ADOConnection1.Connected:=true;
showmessage('服务器连接成功!');
form_server.login:=true;
form_server.Close;
except
messagedlg('服务器连接失败,请检查网络设备是否正常工作,或输入信息是否有误!'+#13+#13+'系统将在2秒后自动关闭。',mtWarning,[mbOk],0);
sleep(2000);
//form_server.login:=true;
//form_server.Hide;
//application.Terminate;
//application.run;
form1.Close;
end;
constr="driver={sql server};pwd=密码;uid=用户名;server=服务器IP;database=数据库名"
conn.open constr
delphi中能用吗?
如果不报错,就能连上
只有window登陆
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=jxj;Data Source=ABC混合登陆
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=jxj;Data Source=ABC
Data Source 就是 服务器名称
User ID 登陆用户名
从原理上说连接本机和连接远程服务器都是可以的,但有几个地方要注意,
1 远程服务器的IP地址必须是公网的,如果,远程服务器也在内网,就要使用端口影射,SQL SERVER的端口一般是1433.
2 最好不要开防火墙,包换WINXP,2003系统自带的
连接时直接用远程服务器的外网IP就可以了,最好先用SQL的企业管理器或分析器测试一下.
User ID=sa
Password=""
用可以打开数据库得用户名和密码就行能ping通的就应该能行吧
SERVER:='ww';--随便
UserID:='sa';
constr1:='Provider=MSDASQL;Persist Security Info=False;Extended Properties="DRIVER=SQL Server;SERVER='+SERVER+';UID='+UserID+';APP=Enterprise;WSID='+SERVER+';DATABASE="数据库名'; adoconnection1.Close;
adoconnection1.ConnectionString:=constr1;
adoconnection1.ConnectionString:='FILE NAME='+extractfilepath(application.ExeName)+'DATA.udl';--连接服务器选择
adoconnection1.Open;
data.udl用于选择服务器。应该可以吧!
function TMainFrm.TestConnect:boolean;
var Return:Boolean;
begin
Return:=false;
TestCnn.Close;
TestCnn.LoginPrompt:=false;
TestCnn.ConnectionString:='Provider=SQLOLEDB.1;Password='+PsdEdt.Text+
';Persist Security Info=True;'+
'User ID='+UserEdt.Text+
';Initial Catalog='+DbEdt.Text+
';Data Source='+ServerEdt.Text;
try
TestCnn.Connected:=true;
Return:=true;
Except
Return:=false;
end;
TestCnn.Connected:=false;
Result:=Return;
end;
用DCOMCONNECTION和SOCKETCONNECTION
procedure SetHost(HostName, HostIP: string);
var
Reg: TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Reg.OpenKey('Software\Microsoft\MSSQLServer\Client\ConnectTo', True) then
Reg.WriteString(HostName, 'DBMSSOCN,' + HostIP + ',1433');
Reg.CloseKey
finally
Reg.Free
end
end;
用一个INI文件可以动态连接服务器,在内网可以实现,但在外网我没有试过, 我也很想知道!关注!