因为我以前一直使用BDE通过ODBC连接的,所以那时只要在客户端把ODBC设置正确就可以使用了,可现在改为ADO后,不知如何动态设置去适应了?
18 个解决方案
#1
放一个ADO控件在程序中,根着导航做一边,就会了. :)
#2
双击adoconnection控件,会出现一个配置向导,里面会有配置串
#3
Adoquery的connectionstring属性动态赋值:Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=sa;Initial Catalog=...;Data Source=... 更改...的地方,第一个位要连接的数据库的名称,第二个为数据服务名称,这个动态赋值串可以在属性的connectionstring,点击出现对话框按提示继续就可以了!
#4
adoconnection.connectionstring:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=SERVERNAME;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CLient1;Use Encryption for Data=False;Tag with column collation when possible=False';//用时自己修改各个属性的值
adoconnection.open;
adoconnection.open;
#5
connectionstring属性,但最好不要直接把连接串写到程序里,因为这样很容易被人在exe搜到
,写到外面的文件里(加密)或者动态生成,怎么说c/s的程序都不安全,有机会改b/s把
将来发行和升级都容易
,写到外面的文件里(加密)或者动态生成,怎么说c/s的程序都不安全,有机会改b/s把
将来发行和升级都容易
#6
楼上 hdjking(永昊)已经说祥细了我就不多说了!
---------------
爱如火,紫如情!
---------------
---------------
爱如火,紫如情!
---------------
#7
难道是我考虑的太复杂了吗?还是没有表达清楚?
我知道可以用ADO去配置他的连接向导,可那些都是静态的,那时或得的机器名和其他参数都是自己写程序机器上的参数,当编译后,我还怎么去连客户的电脑?难道只要用我的程序的都要变成我编程时的机器名和其他参数吗?
至于hdjking(永昊)网友的连接我也会的,而且你还没有考虑到如果你使用的是WINDOWS集成登陆的话,这样的连接字符串是连接不上的,我现在问的主要是客户端如何设置ADO字符串连接服务器的SQL 2000数据库?
我知道可以用ADO去配置他的连接向导,可那些都是静态的,那时或得的机器名和其他参数都是自己写程序机器上的参数,当编译后,我还怎么去连客户的电脑?难道只要用我的程序的都要变成我编程时的机器名和其他参数吗?
至于hdjking(永昊)网友的连接我也会的,而且你还没有考虑到如果你使用的是WINDOWS集成登陆的话,这样的连接字符串是连接不上的,我现在问的主要是客户端如何设置ADO字符串连接服务器的SQL 2000数据库?
#8
你的客户端一样要安装sql2000的客户端吧,那这个服务启动的就是你在connectionstring里的Data Source=... 啊,不是吗?
#9
现在是如果客户使用的是WINDOWS集成登陆的话,那个USER ID和PASSWORD都怎么设置呀?
#10
我也有一样的困惑,就是怎么变成一个变量connection。客户机在第一次启动时,把路径、用户、密码赋给该变量就行了,但我也不知该怎么设这个变量
#11
const GIniFileName = 'init.ini';
procedure Tdatamodule2.DataModuleCreate(Sender: TObject);
begin
IniFile := TIniFile.Create(GetIniFilePath);
ser_ip:=IniFile.ReadString('sever_ip', 'sever', '');
user_name:=inifile.readstring('user_name','default_name','');
user_pw:=inifile.readstring('user_pw','default_pw','');
dbname:=inifile.readstring('dbname','database','');
IniFile.Free;
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=false'
+ ';User ID=' + user_name
+ ';Initial Catalog=' + DBName
+ ';Data Source='+ser_ip
+ ';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096'
+ ';Workstation ID='+localip
+ ';Use Encryption for Data=False'
+ ';Tag with column collation when possible=False';
end;
function Tdatamodule2.GetIniFilePath: string;
begin
FRootPath := ExtractFilePath(Application.ExeName);
Result := FRootPath + GIniFileName;
end;
procedure Tdatamodule2.DataModuleCreate(Sender: TObject);
begin
IniFile := TIniFile.Create(GetIniFilePath);
ser_ip:=IniFile.ReadString('sever_ip', 'sever', '');
user_name:=inifile.readstring('user_name','default_name','');
user_pw:=inifile.readstring('user_pw','default_pw','');
dbname:=inifile.readstring('dbname','database','');
IniFile.Free;
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=false'
+ ';User ID=' + user_name
+ ';Initial Catalog=' + DBName
+ ';Data Source='+ser_ip
+ ';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096'
+ ';Workstation ID='+localip
+ ';Use Encryption for Data=False'
+ ';Tag with column collation when possible=False';
end;
function Tdatamodule2.GetIniFilePath: string;
begin
FRootPath := ExtractFilePath(Application.ExeName);
Result := FRootPath + GIniFileName;
end;
#12
上面的方法是读取ini文件里的服务器明、数据库明、用户名、密码信息
然后形成connectionstring
然后形成connectionstring
#13
我觉得IORILI 的做法已经很好,推荐!楼主不要给我分!
#14
谢谢 IORILI(沒落的阿咎)的回答,按你的方法基本可以了,谢谢!
现在又来个问题,就是你的方法都是考虑非WINDOWS集成登陆的情况,因为我发现如果SQL 2000使用的WINDOWS集成登陆时,那些用户名和密码都无法使用,这如何解决,而
他的连接字符串替换为了
INTEGRATED SRECTUTE !1
现在又来个问题,就是你的方法都是考虑非WINDOWS集成登陆的情况,因为我发现如果SQL 2000使用的WINDOWS集成登陆时,那些用户名和密码都无法使用,这如何解决,而
他的连接字符串替换为了
INTEGRATED SRECTUTE !1
#15
如果是WINDOWS集成登陆的话,用户名改为WINDOWS登陆名 密码为登陆密码
#16
那样就是不行呀,我不知道是咋回事?
#17
在服务器端,加入用户:客户端用户,密码,然后用户名=客户端用户名 ,密码=密码
#18
就是要在服务器端给客户端访问服务器并且访问数据库的权限,
#1
放一个ADO控件在程序中,根着导航做一边,就会了. :)
#2
双击adoconnection控件,会出现一个配置向导,里面会有配置串
#3
Adoquery的connectionstring属性动态赋值:Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=sa;Initial Catalog=...;Data Source=... 更改...的地方,第一个位要连接的数据库的名称,第二个为数据服务名称,这个动态赋值串可以在属性的connectionstring,点击出现对话框按提示继续就可以了!
#4
adoconnection.connectionstring:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source=SERVERNAME;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CLient1;Use Encryption for Data=False;Tag with column collation when possible=False';//用时自己修改各个属性的值
adoconnection.open;
adoconnection.open;
#5
connectionstring属性,但最好不要直接把连接串写到程序里,因为这样很容易被人在exe搜到
,写到外面的文件里(加密)或者动态生成,怎么说c/s的程序都不安全,有机会改b/s把
将来发行和升级都容易
,写到外面的文件里(加密)或者动态生成,怎么说c/s的程序都不安全,有机会改b/s把
将来发行和升级都容易
#6
楼上 hdjking(永昊)已经说祥细了我就不多说了!
---------------
爱如火,紫如情!
---------------
---------------
爱如火,紫如情!
---------------
#7
难道是我考虑的太复杂了吗?还是没有表达清楚?
我知道可以用ADO去配置他的连接向导,可那些都是静态的,那时或得的机器名和其他参数都是自己写程序机器上的参数,当编译后,我还怎么去连客户的电脑?难道只要用我的程序的都要变成我编程时的机器名和其他参数吗?
至于hdjking(永昊)网友的连接我也会的,而且你还没有考虑到如果你使用的是WINDOWS集成登陆的话,这样的连接字符串是连接不上的,我现在问的主要是客户端如何设置ADO字符串连接服务器的SQL 2000数据库?
我知道可以用ADO去配置他的连接向导,可那些都是静态的,那时或得的机器名和其他参数都是自己写程序机器上的参数,当编译后,我还怎么去连客户的电脑?难道只要用我的程序的都要变成我编程时的机器名和其他参数吗?
至于hdjking(永昊)网友的连接我也会的,而且你还没有考虑到如果你使用的是WINDOWS集成登陆的话,这样的连接字符串是连接不上的,我现在问的主要是客户端如何设置ADO字符串连接服务器的SQL 2000数据库?
#8
你的客户端一样要安装sql2000的客户端吧,那这个服务启动的就是你在connectionstring里的Data Source=... 啊,不是吗?
#9
现在是如果客户使用的是WINDOWS集成登陆的话,那个USER ID和PASSWORD都怎么设置呀?
#10
我也有一样的困惑,就是怎么变成一个变量connection。客户机在第一次启动时,把路径、用户、密码赋给该变量就行了,但我也不知该怎么设这个变量
#11
const GIniFileName = 'init.ini';
procedure Tdatamodule2.DataModuleCreate(Sender: TObject);
begin
IniFile := TIniFile.Create(GetIniFilePath);
ser_ip:=IniFile.ReadString('sever_ip', 'sever', '');
user_name:=inifile.readstring('user_name','default_name','');
user_pw:=inifile.readstring('user_pw','default_pw','');
dbname:=inifile.readstring('dbname','database','');
IniFile.Free;
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=false'
+ ';User ID=' + user_name
+ ';Initial Catalog=' + DBName
+ ';Data Source='+ser_ip
+ ';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096'
+ ';Workstation ID='+localip
+ ';Use Encryption for Data=False'
+ ';Tag with column collation when possible=False';
end;
function Tdatamodule2.GetIniFilePath: string;
begin
FRootPath := ExtractFilePath(Application.ExeName);
Result := FRootPath + GIniFileName;
end;
procedure Tdatamodule2.DataModuleCreate(Sender: TObject);
begin
IniFile := TIniFile.Create(GetIniFilePath);
ser_ip:=IniFile.ReadString('sever_ip', 'sever', '');
user_name:=inifile.readstring('user_name','default_name','');
user_pw:=inifile.readstring('user_pw','default_pw','');
dbname:=inifile.readstring('dbname','database','');
IniFile.Free;
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=false'
+ ';User ID=' + user_name
+ ';Initial Catalog=' + DBName
+ ';Data Source='+ser_ip
+ ';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096'
+ ';Workstation ID='+localip
+ ';Use Encryption for Data=False'
+ ';Tag with column collation when possible=False';
end;
function Tdatamodule2.GetIniFilePath: string;
begin
FRootPath := ExtractFilePath(Application.ExeName);
Result := FRootPath + GIniFileName;
end;
#12
上面的方法是读取ini文件里的服务器明、数据库明、用户名、密码信息
然后形成connectionstring
然后形成connectionstring
#13
我觉得IORILI 的做法已经很好,推荐!楼主不要给我分!
#14
谢谢 IORILI(沒落的阿咎)的回答,按你的方法基本可以了,谢谢!
现在又来个问题,就是你的方法都是考虑非WINDOWS集成登陆的情况,因为我发现如果SQL 2000使用的WINDOWS集成登陆时,那些用户名和密码都无法使用,这如何解决,而
他的连接字符串替换为了
INTEGRATED SRECTUTE !1
现在又来个问题,就是你的方法都是考虑非WINDOWS集成登陆的情况,因为我发现如果SQL 2000使用的WINDOWS集成登陆时,那些用户名和密码都无法使用,这如何解决,而
他的连接字符串替换为了
INTEGRATED SRECTUTE !1
#15
如果是WINDOWS集成登陆的话,用户名改为WINDOWS登陆名 密码为登陆密码
#16
那样就是不行呀,我不知道是咋回事?
#17
在服务器端,加入用户:客户端用户,密码,然后用户名=客户端用户名 ,密码=密码
#18
就是要在服务器端给客户端访问服务器并且访问数据库的权限,