DELPHI7开发三层数据库程序
用的是DCOMCconnection控件,要填它的ServerName属性,在这里只能选择本机上已经注册过的应用服务器,
如果我的应用服务器与数据不在同一台电脑上,那应该怎样填啊?
我现在填的是:
ProjectSEVER.REMOTESERVER
如果我的应用服务器与数据不在同一台电脑上,那应该怎样填啊?
[解决办法]
ServerName是字符型的,可以用代码赋值:
DCOMCconnection1.ServerName:='ProjectSEVER.REMOTESERVER';
[解决办法]
SocketConnection好用点
[解决办法]
1、由机器名,获得IP名,直接用(IP也可)
2、MSSQL数据库的数据库名
3、用户名,密码
使用SQL服务器的连接代码:
、 statusbar1.Panels[0].text:=' ÕýÔÚÁ¬½Ó...... ';
aHost:=Trim(Edit4.Text); // ·þÎñÆ÷¼ÆËã»úÃû »ò ·þÎñÆ÷¼ÆËã»úµÄIP
aPort:=Trim(Edit5.Text); // Socket.exe µÄ¶Ë¿Ú
Temp:=Temp+1;
try
DataModule1.SocketConnection1.Connected:=False;
DataModule1.SocketConnection1.Host:=aHost; // ·þÎñÆ÷¼ÆËã»úÃû »ò ·þÎñÆ÷¼ÆËã»úµÄIP
DataModule1.SocketConnection1.Port:=StrToInt(aPort); // Socket.exe µÄ¶Ë¿Ú
DataModule1.SocketConnection1.ServerName:='Project1.TServer'; // ·þÎñÆ÷Ãû Óɱà³Ìʱȷ¶¨
DataModule1.SocketConnection1.SupportCallbacks:=True;
DataModule1.SocketConnection1.Connected:=False;
DataModule1.SocketConnection1.Connected:=true;
DataModule1.SocketConnection1.AppServer.ServerShowText('Á¬½Ó£º'+aPCName+' '+aIP);
statusbar1.Panels[0].text:=' ²âÊÔ'+InttoStr(Temp)+': ·þÎñÆ÷ '''+Edit4.Text+''' Á¬½Ó³É¹¦...... ';
WriteToIni(Trim(Edit4.Text),Trim(Edit5.Text));
except
statusbar1.Panels[0].text:=' ²âÊÔ'+InttoStr(Temp)+': ÎÞ·¨Á¬½Ó·þÎñÆ÷ '''+Edit4.Text+''' ...... ';
end;
[解决办法]
代码:
statusbar1.Panels[0].text:=' ÕýÔÚÁ¬½Ó...... ';
aHost:=Trim(Edit4.Text); // ·þÎñÆ÷¼ÆËã»úÃû »ò ·þÎñÆ÷¼ÆËã»úµÄIP
aPort:=Trim(Edit5.Text); // Socket.exe µÄ¶Ë¿Ú
Temp:=Temp+1;
try
DataModule1.SocketConnection1.Connected:=False;
DataModule1.SocketConnection1.Host:=aHost; // ·þÎñÆ÷¼ÆËã»úÃû »ò ·þÎñÆ÷¼ÆËã»úµÄIP
DataModule1.SocketConnection1.Port:=StrToInt(aPort); // Socket.exe µÄ¶Ë¿Ú
DataModule1.SocketConnection1.ServerName:='Project1.TServer'; // ·þÎñÆ÷Ãû Óɱà³Ìʱȷ¶¨
DataModule1.SocketConnection1.SupportCallbacks:=True;
DataModule1.SocketConnection1.Connected:=False;
DataModule1.SocketConnection1.Connected:=true;
DataModule1.SocketConnection1.AppServer.ServerShowText('Á¬½Ó£º'+aPCName+' '+aIP);
statusbar1.Panels[0].text:=' ²âÊÔ'+InttoStr(Temp)+': ·þÎñÆ÷ '''+Edit4.Text+''' Á¬½Ó³É¹¦...... ';
WriteToIni(Trim(Edit4.Text),Trim(Edit5.Text));
except
statusbar1.Panels[0].text:=' ²âÊÔ'+InttoStr(Temp)+': ÎÞ·¨Á¬½Ó·þÎñÆ÷ '''+Edit4.Text+''' ...... ';
end;
[解决办法]
我用SocketConnection
[解决办法]
Address := getAddress;
Port := getPort;
//准备与服务器建立连接
if Assigned(FOnLog) then
FOnLog(GetTickCount, '', '准备建立连接');
FSocketConnection := TSocketConnection.Create(nil);
// FSocketConnection.AfterDisconnect := AfterDisconnect;
FSocketConnection.Host := Address;
FSocketConnection.Port := Port;
FSocketConnection.ServerName := 'MyAppServer.MyAppDataServer';
FSocketConnection.ServerGUID := GUIDToString(CLASS_MyAppDataServer);
try
FSocketConnection.Connected := true;
if Assigned(FOnLog) then
FOnLog(GetTickCount, '', '连接成功!');
except
if Assigned(FOnLog) then
FOnLog(GetTickCount, '', '连接失败!');
end;
//建立远端连接。
MyAppDataServer := IMyAppDataServerDisp(IDispatch(FSocketConnection.AppServer)); // CoHDServer.CreateRemote(Address);
[解决办法]
建议使用SocketConnection,上面有代码。
[解决办法]
三层:
数据层
业务层
用户层/表示层
[解决办法]
SocketConnection好用。用这个吧
DCOM用的不多