如何在程序运行中配置ADO的数据库连接字符串?(200分)

  • 主题发起人 主题发起人 青侠
  • 开始时间 开始时间

青侠

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序运行中如何调用ADO的数据库连接串?
 
我不是高手,但是我想我可以给点意见,你可以把连接串先写好,放在一个单元或者是文件里,然后再调用。
程序初始化的时候调用就可以了,我的答案不知道是否对,因为我也是初学者。
 
Connection.Close;//Connection是TADOConnection
Connection.ConnectionString := '连接字符串';
connection.Open;
 
ADOConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'Data/data.mdb;Persist Security Info=False;Jet OLEDB:Database Password=yourpassword';
 
串的写法:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=hotdot;Data Source=127.0.0.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=HRSERVER;Use Encryption for Data=False;Tag with column collation when possible=False

调用:
adoconnection1.connectionstring
 
前面各位说的我就不再多讲了!

关键是要明白字串的每部分的含意:
Provider=Microsoft.Jet.OLEDB.4.0 ----是所用到的数据库联接程序
                 ----用ADO要选SQLOLEDB.1

Data Source='数据源所在位置'   ----一般SQL_SERVER如果只一个默认实例
                 可以直接是机器名或机器IP
                 如果有多个实例时要用'//机器名/实例名'
Initial Catalog='数据库名称'

最后如果系统用的是WINNT集成安全设置,联接字串就不再加UID,
你在程序中只要指定上述项目,其他的系统会自动生成,没有特别要求不会动他的!

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;
Initial Catalog=NEW_ORDER;Data Source=192.5.1.95;Use Procedure for Prepare=1;
Auto Translate=True;Packet Size=4096;Workstation ID=id

 
procedure TMainForm.FormCreate(Sender: TObject);
begin
GetDir(0,Programer);//programer为全局变量
end;

procedure TDMForm.DataModuleCreate(Sender: TObject);
begin
try
adoc.connected := False;
ADOC.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MainForm.Programer+'/table.mdb;Persist Security Info=False';
ADOC.Connected := True;
adoqryVt.Open;
except
ShowMessage('数据库连接失败!');
end;
end;
 
用EditConnectionString函数可以在运行时显示ADO数据源配置窗口(与设计时的一样),
并自动对AdoConnection的ConnectionString属性赋值(很奇怪在Delph帮助中找不到此函数),
函数原型是:
function EditConnectionString(Component: TComponent): Boolean;
执行成功返回true,否则返回false,该函数在AdoCnEd单元中(其实就是数据配置窗口单元),
必须use此单元.
 
你可以在设计时按向导生成一个 Connection 字符串查看。
 
大家讲得不错 :)
补充一下 用ADO连接带密码的Access文件
with ADOConnection1 do begin
close;
loginprompt:=false;
connectionstring:=
'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'password="";' //这是用户工作组(*.mdw)密码
+ 'User ID=Admin;' //这是用户工作组(*.mdw)用户名
+ 'Data Source=C:/JCWZ/data/jcwz.xyw;' +'Persist Security Info=True;'
+ 'Mode=Share Deny None;Extended Properties="";'
+ 'Jet OLEDB:System database="";' //这是用户工作组文件
+ 'Jet OLEDB:Registry Path="";'
+ 'Jet OLEDB:Database Password=xyw05158398050;' //这里才是数据库密码
+ 'Jet OLEDB:Engine Type=1;'
+ 'Jet OLEDB:Database Locking Mode=1;'
+ 'Jet OLEDB:Global Partial Bulk Ops=2;'
+ 'Jet OLEDB:Global Bulk Transactions=1;'
+ 'Jet OLEDB:New Database Password="";'
+ 'Jet OLEDB:Create System Database=False;'
+ 'Jet OLEDB:Encrypt Database=False;'
+ 'Jet OLEDB:Don''t Copy Locale on Compact=False;'
+ 'Jet OLEDB:Compact Without Replica Repair=False;'
+ 'Jet OLEDB:SFP=False';
connected:=true;
end;
 
方便的方法,建个UDL文件配置一下,再用记事本打开就有了
 
To:tangle:
你的AdoCnEd单元哪时找?mail to:hegqbest@163.com,提供使用方法,谢;
To All:我的意思是如何调用配置数据连接的对话框,在设计时点按connectstring 时弹出的对话窗口?
 
这样你直接建一个空的aa.txt文件
然后改名为aa.udl
再在该Button中执行该文件就可以了,
不过你获得connectstring就要读该文件了
你双击aa.udl配置完后打开看看就知道了。
 
也可以建个ini 文件,里面放上 连接字符串,运行时读取
 
楼上的意见都很好,补充一点:../demos/Ado/AdoTest/ADOTEST.DPR
看一看EditConnStr控件的OnClick事件,可以调用EditConnectionString函数。。。
 
具体来说,是ADODB单元的PromptDataSource函数,eg.
ConnectionString.Text := PromptDataSource(Handle, ConnectionString.Text);
 
后退
顶部