怎么动态连接数据库 ( 积分: 100 )

  • 主题发起人 主题发起人 dapao
  • 开始时间 开始时间
D

dapao

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥,谁有动态连接数据库的实例啊,推荐几本书也可以啊,谢谢!
 
请各位不惜赐教
 
没人知道么?
 
你用什么数据库?
SQL SEVER 只需连接服务器名称。
ACCESS 用ADODATASET连接后将连接字符串中数据库的路径用函数表示,这样可以自动生成数据库的路径。
D
 
先确定用什么数据库,然后才能告诉你如何动态连接。
 
uses ADOConed;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
EditConnectionString(ADOConnection1); // 动态连接所有数据库
end;
 
我用的是access数据库,最好的效果是:登陆时如果连接数据库不成功则弹出连接数据库的对话框,然后进行连接。
 
我用ACCESS时用adoConnect组件,可动态写ConnectText,可静态配置后拷贝到此,判断ADOConnect.Connected是否连接,没有再连
 
bbscom你好搞笑啊
通常的实现是:
设计时有默认的连接,可以保存在注册表或ini文件里,
工程启动时有一个闪现窗口,等待后台数据库连接,连上
则显示主窗体,否则,出现注册连接窗体,很简单的
估计楼主是要让介绍本好书:
Delphi 7 高效数据库程序设计(李维)
 
先申明
public
slInfo : Tconn;
sltestInfo:Tconn;
procedure SetDBInfo(const ci: integer);
procedure Tfrm_Select_DB.SetDBInfo(const ci: integer);
begin
info:=nil;
case ci of
0: info := @slInfo;
1: info := @slInfo;
end;
try
with dm.connection do
begin
AliasName := info^.AliasName;
DatabaseName := info^.DatabaseName;
Params.Add('USER NAME=' + info^.UserName);
Params.Add('PASSWORD=' + info^.Password);
end;
except
。。。。
end;
end;

procedure Tfrm_Select_DB.FormCreate(Sender: TObject);
var
iindex:integer;
begin
if (iindex>CB_SDB.Items.Count-1) or (iindex<0) then
begin
CB_SDB.ItemIndex := 0;
end
else
CB_SDB.ItemIndex := iindex;
connection:=false;

with slInfo do
begin
AliasName := '';
DatabaseName := ''
UserName := '';
Password := '';
end;
with sltestInfo do
begin
AliasName := '';
DatabaseName := ''
UserName := '';
Password := '';
end;
end;
procedure Tfrm_Select_DB.bt_okClick(Sender: TObject);
procedure updateDBName;
var
i:integer;
begin
with dm do
begin
for i:=0 to ComponentCount - 1 do
if Components is TDBDataSet then
(Components as TDBDataSet).DataBaseName :=gDataBaseName;
end;
end;

begin
if not Assigned(dm) then
dm := Tdm.Create(application);
try
with dm.connection do
begin
close;
Params.Clear;
SetDBInfo(CB_SDB.ItemIndex);
Open;
WriteToIni(CB_SDB.ItemIndex);
end;
gDataBaseName:= info^.DatabaseName;
updateDBName;
Connected:=true;
close;
except
application.Terminate;
end;
end;
 
引用ADODB。
在代码中可以使用PromptDataSource来弹出标准的多选项卡数据源选择对话框,就是你在设计时可用的那个。
function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;
参数ParentHandle指定此对话框的父窗口,InitialString位初始链接字符串,函数会解析这个字符串,让对话框出现前就已经指定了部分链接参数,比如服务器名,默认数据库等等。你可以根据需要更改,确定后,此函数返回根据你设置产生的链接字符串,你可以将它赋值给ADOQuery,ADOConnection等数据库控件的ConnectionString属性!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部