当前位置:主页>仓库管理软件> 列表

ADOConnection1.ConnectionStri 找财务管理软件

销售管理软件版1楼: procedure TForm1.BitBtn1Click(Sender: TObject);//以下为保存INI代码 经测试OK
begin
if radiobutton1.Checked=true then//这里是SQL的NT认证模式
begin
inifile:=Tinifile.Create(ExtractFilePath(Paramstr(0))+''myini.ini'');
inifile.WriteString(''SQL'',''name'','''');
inifile.WriteString(''SQL'',''password'','''');
inifile.Destroy;
end;
if radiobutton2.Checked=true then//这里是SQL的SA密码认证模式
begin
inifile:=Tinifile.Create(ExtractFilePath(Paramstr(0))+''myini.ini'');
inifile.Writestring(''SQL'',''name'',EDIT1.TEXT);
inifile.WriteString(''SQL'',''password'',EDIT2.TEXT);
inifile.Destroy;
end;
end;

以下为设定ADO连接代码 我是通过 判断name是否为空来确定用户选定的SQL登陆方式(不知此法是否妥当?)
......
var
s1,s2:string;
ini:TIniFile;
begin
ini := TIniFile.Create(ChangeFileExt(Application.ExeName,''myini.INI'' ));

s1:= ini.ReadString(''SQL'',''name'','''');
if s1='''' then
begin
if ADOConnection1.Connected then ADOConnection1.Connected := False;
ADOConnection1.ConnectionString :=''Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=false;Initial Catalog=master;data source=(local)'';
ADOConnection1.Connected := True;
end;
if s1<>'''' then
s2:=ini.ReadString(''SQL'',''password'','''');
begin
if ADOConnection1.Connected then ADOConnection1.Connected := False;
ADOConnection1.ConnectionString :=''Provider=SQLOLEDB.1;Persist Security Info=true;User ID=''+s1+'';password=''+s2+'';Initial Catalog=master;data source=(local);'';
ADOConnection1.Connected := True;
end;
......
ini.Destroy;
end;

运行后 提示:“无效的授权说明”
我估计应该是ADOConnection1.ConnectionString 这里出了问题 但不明其理 能否指点 感谢

2楼: const
ADOSTR=''Provider=SQLOLEDB.1;Persist Security Info=False;User ID=%s;Password=%s;''+
''Initial Catalog=%s;Data Source=%s'';
function TDM.TestConnected(UserName, Password, ServerName,
DBBase: String): Boolean;
begin
//if ADObase.Connected then
// begin
// Result:=True;
// Exit;
// end;
ADObase.Connected:=False;
ADObase.ConnectionString:=Format(ADOSTR,[UserName,Password,DBbase,ServerName]);
try
ADObase.Connected:=True;
Result:=True;
except
ADObase.Connected:=False;
Result:=False;
end;
end;
为什么不是inifile.free呢? 如财务管理软件

3楼: function ReadLogon:Boolean;
var
AFile:TIniFile;
begin
aFile:=TIniFile.Create(GetAppPATH+IFileName);
with aFile do
begin
Logon.Connected:=aFile.ReadInteger(''Logon'',''Connected'',0);
//-----
Logon.ServerName:=aFile.ReadString(''Logon'',''Server'',''JLS_SERVER'');
Logon.DBbase:=aFile.ReadString(''Logon'',''DataName'',''QMMIS'');


Logon.UserName:=aFile.ReadString(''Logon'',''UserName'',(''sa''));
Logon.Password:=aFile.ReadString(''Logon'',''Password'',(''19781101''));
Result:=True;
end;
aFile.Free;
end;

procedure WriteLogon;
var
aFile:TIniFile;
begin
aFile:=TIniFile.Create(GetAppPATH+IFileName);
with aFile do
begin
WriteInteger(''Logon'',''Connected'',Logon.Connected);
WriteString(''Logon'',''Server'',Logon.ServerName);
WriteString(''Logon'',''DataName'',Logon.DBbase);
WriteString(''Logon'',''UserName'',Logon.UserName);
WriteString(''Logon'',''Password'',Logon.Password);

end;
aFile.Free;
end;

4楼: 如果有问题,升级MDAC

5楼: 测试如下:
1.我这里的SQL SERVER2000是采用WINDOWS认证模式登陆的 我去掉对 if s1<>'''' then 情况的判断后 即只留下if s1=''''的这种情况 同时把ini.Destroy;改为ini.free;后 测试连接OK

2.若只把ini.Destroy;改为ini.free; 希望通过判断两种情况来处理连接字符串 仍然提示:“无效的授权说明”

6楼: 我的本意是希望 用户选择SQL SERVER2000数据库登录连接方式 并将其记录在INI文件中 待程序运行时读取


我的电脑采用WINDOWS NT认证模式 未采用SQL密码认证
故我在INI里 选的是radiobutton1.Checked=true
是不是我写的结构或者哪里出现了问题

不明其理 恳请指教

感谢感谢

销售管理软件版7楼: 接受答案了.