这是我的记事本文件whconn.ini的内容:
[SERVER]
ServerName=Provider=SQLOLEDB.1;Persist Security Info=False;User ID='sa';Password='';Initial
Catalog='whjxc';Data Source='center3'
以下是我写在应用程序服务器中远程数据模块中的一个初始化过程:
var
connini:TINIFile;
LocalDir:String;
sServer:String;
sBaseName:String;
sUserID:String;
sPassword:String;
sConn:string;
begin
{ Update the client counter }
MainForm.UpdateClientCount(1);
GetDir(0,LocalDir);
//打开初始化文件,取得连接参数
connini:=TINIFile.Create(LocalDir+'\whconn.ini');
sServer:=connini.ReadString('SERVER','sServer','Error');
sBaseName:=connini.ReadString('SERVER','sBasename','Error');
sUserID:=connini.ReadString('SERVER','User ID','Error');
sPassword:=connini.ReadString('SERVER','Password','Error');
//连接参数拼接完毕,不显示登录提示对话框
dataconn.Connected:= False;
dataconn.LoginPrompt:= true
sConn:='Provider=SQLOLEDB.1;Persist Security Info=False;'+'User ID='+sUserID+';Password='+sPassword+';Initial Catalog='+sBasename+';Data Source='+sServer+';';
dataconn.ConnectionString:=sConn;
dataconn.Connected:=True;
end;
在两层里面一点问题都没有,可是改成三层之后,就调用不了记事本里的内容了,如果在程序里手动加入连接信息,客户端就可以调用,请各位大侠指点指点我吧!谢谢!
[SERVER]
ServerName=Provider=SQLOLEDB.1;Persist Security Info=False;User ID='sa';Password='';Initial
Catalog='whjxc';Data Source='center3'
以下是我写在应用程序服务器中远程数据模块中的一个初始化过程:
var
connini:TINIFile;
LocalDir:String;
sServer:String;
sBaseName:String;
sUserID:String;
sPassword:String;
sConn:string;
begin
{ Update the client counter }
MainForm.UpdateClientCount(1);
GetDir(0,LocalDir);
//打开初始化文件,取得连接参数
connini:=TINIFile.Create(LocalDir+'\whconn.ini');
sServer:=connini.ReadString('SERVER','sServer','Error');
sBaseName:=connini.ReadString('SERVER','sBasename','Error');
sUserID:=connini.ReadString('SERVER','User ID','Error');
sPassword:=connini.ReadString('SERVER','Password','Error');
//连接参数拼接完毕,不显示登录提示对话框
dataconn.Connected:= False;
dataconn.LoginPrompt:= true
sConn:='Provider=SQLOLEDB.1;Persist Security Info=False;'+'User ID='+sUserID+';Password='+sPassword+';Initial Catalog='+sBasename+';Data Source='+sServer+';';
dataconn.ConnectionString:=sConn;
dataconn.Connected:=True;
end;
在两层里面一点问题都没有,可是改成三层之后,就调用不了记事本里的内容了,如果在程序里手动加入连接信息,客户端就可以调用,请各位大侠指点指点我吧!谢谢!
connini:=TINIFile.Create(LocalDir+'\whconn.ini');换成三层後,路径有没有不对?
路径应该是对的,因为以前在客户端,这个ini文件就放在客户端了,而现在改为三层后,我是在应用程序服务器端调用的,就把ini文件放到应用程序服务器端了。可不知为什么总是取不到这中文件中的内容。
1,不进行IO操作;
2,不进行SOCKET操作;
3
var
ConIniFile: TIniFile;
begin
ClientCount:=0;
DisplayClient; ConnectionStr:='';
ConIniFile := TIniFile.Create(MWorkPath+'AdoCon.ini');
ConnectionStr:= ConIniFile.ReadString('connection', 'constr', 'null') ;
ConIniFile.Free;
end;
procedure TManageRDM.RemoteDataModuleCreate(Sender: TObject);
var
// 2002-7-9 dyf
XMLFileName: string;
ConnctProp:TConnctProp;
begin
QueryDM:=TQueryDM.Create(nil);
ProcedureDM:=TProcedureDM.Create(nil);
if MainForm.ConnectionStr<>'null' then begin
ADOConCost.Connected:=False;
ADOConCost.ConnectionString:= MainForm.ConnectionStr;
ADOConCost.Connected:=True;
end;
// 2002-7-9 dyf
//读取连接的配置文件
XMLFileName:=MWorkPath + 'connparams.xml'; //配置文件的全路经
XMLDocument1.filename:=XMLFileName;
XMLDocument1.active:=true;
ConnctProp:=TConnctProp.Create;
ConnctProp.LoadFromXMLDoc(self,XMLDocument1); Inc(MainForm.ClientCount);
MainForm.DisplayClient;
end;
还是不行啊!我一到客户端连接时,就提示连接不到数据库,也就是找不到INI文件里的内容。
出现的问题是:SQL Server不存在或访问被拒绝。
我解决的方式是发布一个属性,专门用来存储这个INI文件的路径
这样就可以顺利的读出,不会出现找不到INI文件的问题,对于
三层里面来说,MIDAS其实也是一些什么接口之类的,封装过后的
COM,你也可以发布同样的属性,使用Type Libray,可以弹出一个
xxx.tlb的窗口,那里可以发布属性试试吧,祝你好运ePing
我已经注册了,可还是连不上?!
DCOM的EXE方式?
MTS/COM+的DLL方式?
做法不同的
我用的是DCOM的EXE方式。
试成功之后能告诉我吗?
ini文件放在系统目录下 D:\Winnt
你可以参考一下procedure TSrvDM.RemoteDataModuleCreate(Sender: TObject);
var
sServerName, sUserID, sPwd: string;
iniFile: TIniFile;
sConn: string;
begin IniFile := TIniFile.Create( 'DBConn.ini');
sServerName := iniFile.ReadString('ADOConnection', 'Server Name', '');
sUserID := iniFile.ReadString('ADOConnection', 'User ID', '');
sPwd := ReadPass('Password', 8);
sConn := 'Provider=SQLOLEDB.1;Password= ' + sPwd + ';Persist Security Info=False;User ID= ' + sUserID + ';Data Source=' + sServerName +';';
sConn := sConn + 'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
sConn := sConn + 'Workstation ID=' + sServerName + ';Use Encryption for Data=False;Tag with column collation when possible=False';
FServerName := sServerName;
with ADOConnection1 do
begin
if Connected then
Close;
ConnectionString := sConn;
Connected := True;
end;
end;
Server Name = wjg
User ID = organdbo
password = 888888你可以跟踪看看从Ini文件读出的值是否正确
我去试一试,如果成功我会告诉你的。
然后再,
dataconn.ConnectionString:=sConn;
dataconn.Connected:=True; 因为你手动设置是正确的,如果现在可以连接的话,那问题只能出现在你读Ini文件了。
再如确认是读Ini文件出错,那你可以跟踪一下是你先建立连接还是先读取Ini文件。把问题的范围慢慢缩小,最终定会找到并解决…
你按照你上面所写的,把ini放到D:\Winnt就成功了,还有我的这个LocalDir这个相对路径,我按照你那么做就行了。真是太谢谢你了,我另开一贴,你来接分!
也谢谢大家的不断帮助与参与,马上结贴!