我现在遇到这样一个问题:
使用配置文件配置数据库,数据库表的拥有者是系统默认的dbo,配置模块书写如下:
procedure TTSellByPhone.InitDataBase;
var ConStr, Lpathname:string;
pini:Tinifile;
begin
with ADOConSellByphone do //ADO组件
begin
connected:=False;
pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'database.ini');//取得INI文件
ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1');
ConStr := ConStr+';Initial Catalog=SellByPhone';//数据库名
ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','lile'); ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=';
ConStr := ConStr+ Pini.ReadString('Connect','Workstation ID','lile') +';Use Encryption for Data=False;Tag with column collation when possible=False';
Pini.Free;
Connectionstring := ConStr;
Try
Connected:=True;
except
end;
end;
end;在运行时出现用户"administor"登陆失败。
但是如果在数据库中新建一个登陆名,并把表的拥有者改成该登陆名,比如“system”,则可以登陆(在此密码设置成空),代码如下:
procedure TTSellByPhone.InitDataBase;
var ConStr, Lpathname:string;
pini:Tinifile;
begin
with ADOConSellByphone do
begin
connected:=False;
pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'database.ini');//取得INI文件
ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1');
ConStr := ConStr+';Persist Security Info=false;User ID='
+Pini.ReadString('Connect','User ID','System');
ConStr := ConStr+';Initial Catalog=SellByPhone';
ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','lile'); ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=';
ConStr := ConStr+ Pini.ReadString('Connect','Workstation ID','lile') +';Use Encryption for Data=False;Tag with column collation when possible=False';
Pini.Free;
Connectionstring := ConStr;
Try
Connected:=True;
except
end;
end;
请高手分析指教
使用配置文件配置数据库,数据库表的拥有者是系统默认的dbo,配置模块书写如下:
procedure TTSellByPhone.InitDataBase;
var ConStr, Lpathname:string;
pini:Tinifile;
begin
with ADOConSellByphone do //ADO组件
begin
connected:=False;
pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'database.ini');//取得INI文件
ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1');
ConStr := ConStr+';Initial Catalog=SellByPhone';//数据库名
ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','lile'); ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=';
ConStr := ConStr+ Pini.ReadString('Connect','Workstation ID','lile') +';Use Encryption for Data=False;Tag with column collation when possible=False';
Pini.Free;
Connectionstring := ConStr;
Try
Connected:=True;
except
end;
end;
end;在运行时出现用户"administor"登陆失败。
但是如果在数据库中新建一个登陆名,并把表的拥有者改成该登陆名,比如“system”,则可以登陆(在此密码设置成空),代码如下:
procedure TTSellByPhone.InitDataBase;
var ConStr, Lpathname:string;
pini:Tinifile;
begin
with ADOConSellByphone do
begin
connected:=False;
pini:=Tinifile.Create(ExtractFilePath(ParamStr(0))+'database.ini');//取得INI文件
ConStr := 'Provider='+Pini.ReadString('Connect','Provider','SQLOLEDB.1');
ConStr := ConStr+';Persist Security Info=false;User ID='
+Pini.ReadString('Connect','User ID','System');
ConStr := ConStr+';Initial Catalog=SellByPhone';
ConStr := ConStr+';Data Source='+Pini.ReadString('Connect','Data Source','lile'); ConStr := ConStr+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=';
ConStr := ConStr+ Pini.ReadString('Connect','Workstation ID','lile') +';Use Encryption for Data=False;Tag with column collation when possible=False';
Pini.Free;
Connectionstring := ConStr;
Try
Connected:=True;
except
end;
end;
请高手分析指教
...
if FileExists(ExtractFilePath(ParamStr(0)) + 'WyglData.ini') then
begin
FileConf := TIniFile.Create(ExtractFilePath(ParamStr(0))
+ 'DataBase.ini');
try
ServerName := FileConf.ReadString('DBConfig','Server','Server');
DataBaseName := FileConf.ReadString('DBConfig','DataBase','MyDB');
UserID := FileConf.ReadString('DBConfig','UserName','sa');
Passwd := FileConf.ReadString('DBConfig','PassWord','');
AuthIn := FileConf.ReadBool('DBConfig','IntgAudit',True);
if AuthIn then
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;'
+ 'Integrated Security=SSPI;Initial Catalog='
+ DataBaseName + ';Data Source=' + ServerName
else
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;'
+ 'Initial Catalog=' + DataBaseName + ';Data Source='
+ ServerName + ';User ID=' + UserID + ';Password=' + Passwd;
ADOConnection1.Open;
finally
FileConf.Free;
end;
end;
SQL安全认证方式有:Windows认证(不适合于win9x/me),SQL以及混合模式。
我选择了混合模式。
另外,如果采用了Windows集成认证方式,如果在Win9x下,还应注意当前用户是否正常登录系统。
试试sa行不行