对我来说是大问题!!! 小弟刚开始学DELPHI一个星期,天天熬夜,好不容易写了一个管理系统,现在想到别的机器上去测试一下,发现一个大问题(对我来说)。刚开始连数据库的时候使用的是绝对路径,所以不能移植到别的机器上。很烦,不懂。问了别人,说可以刚开始做的时候将所有的数据库控件放到DATA MODULE上。小弟这样做了,只是还是做不出来,没办法只好来请教各位大侠了。不知道怎么写连接的代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是用什么来连数据库的说清楚点可以用ODBC连 不要用绝对路径,每次都取得他的运行路径!例如:procedure TForm1.FormCreate(Sender: TObject);var path:string;begin path:=extractfilepath(paramstr(0)); table1.DatabaseName:= path; showmessage(path);end;其他也是根据path改变相应连接字符串 我是用ADO控件连接ACCESS数据库,然后用ADOQuery连接,就是想将所有的ADOQuery都放在DATA MODULE里,进行统一的管理,其他的FORM就通过调用这里的东西。然后想让数据库连接时用相对路径。不会写这个代码。 99guo(爱DELPHI用VB!无奈!) ,是不是这样写,可以不用ADOconnection控件呢? 设置数据库连接时直接把access的路径改为相对路径就可以了,其他什么都不用改。 用ADOconnection控件:设置ADOconnection.connectionstring属性,或动态赋值所有的ADOQuery的属性:ADOQuery.connectin:=ADOconnection; 可以,不过如果你更改数据库连接又要一个一个改,何必?有不符合对象化和封装要求,用一个ADOconnection,这样好一点。如何用的代码Help和书上多,自己看看几分钟就搞定了。 我就是想只用一个ADOconnection,将它放置在data module这个数据模块窗体上。比如我双击ADOconnection控件就出现连接对话框了,这样连接得到的是绝对路径。如何能将它设置成相对路径呢?我写了这样的一段代码,不知道可以不可以。procedure TDataModule1.DataModuleCreate(Sender: TObject);var Str_DatabasePath:string; //定义一个字符串变量,begin Str_DatabasePath:=ExtractFilePath(Application.ExeName); Str_DatabasePath:=Str_DatabasePath+'db\db1.mdb';{下面的绝对路径怎么改?} Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Delphi\210\db\db1.mdb;Persist Security Info=False //这里我是通过双击,得到连接的。是不是只要把Data Source这里改为相对路径就可以了???这样改过之后,我还在DATA MODULE这个窗体上放置了ADOQuery1,通过点击connection属性,这样得到的路径还是绝对路径吗?是否应该通过手工写代码才能实现这样的连接呢?end.小弟新手上路,很多东西都不懂,希望各位热心的朋友能帮助我解决这样令我头痛的问题,多谢了!!! 你可以放在INI文件里,可以分成几个字符串,然后加起来,赋给adoconnection的connectionstring. procedure TForm1.FormCreate(Sender: TObject);var path,Str_DatabasePath:string;begin Str_DatabasePath:=ExtractFilePath(Application.ExeName); Str_DatabasePath:=Str_DatabasePath+'db\db1.mdb'; path:=extractfilepath(paramstr(0)); adoconnection1.Provider := 'Microsoft.Jet.OLEDB.4.0;Data Source=' +Str_DatabasePath+';Persist Security Info=False'; adoconnection1.Connected := true;end; 快刀斩!统统修改,所有的都连到一个ADOConnection,然后把所有的Query的连接字符串删除了吧! 天啊~我好笨,Delphi好难!还是弄不出来。 delphi 怎么将一个字符置为空 RegMSComm.exe串口注册怎么样写入程序,让其在程序运行时自动注册? autoupgrader的使用 TrayIcon 如何指定TDBRID网格里面的背景 如何在OpenGL程序中显示汉字? 关于从数据库中读取图片(image类型)的问题?? 一个小问题:真是到了用的时候才知道不会,到http://www.csdn.net/expert/TopicView.asp?id=308236去领分 关于Label的赋值??? 啊…!……死人啦……咳…咳咳…咳…咳… 热心点的进来呀求大家了…… 问一个关于ComboBox的问题 高手请进,关于ado问题?
说清楚点
可以用ODBC连
例如:
procedure TForm1.FormCreate(Sender: TObject);
var
path:string;
begin
path:=extractfilepath(paramstr(0));
table1.DatabaseName:= path;
showmessage(path);
end;
其他也是根据path改变相应连接字符串
设置ADOconnection.connectionstring属性,或动态赋值
所有的ADOQuery的属性:
ADOQuery.connectin:=ADOconnection;
如何用的代码Help和书上多,自己看看几分钟就搞定了。
我写了这样的一段代码,不知道可以不可以。
procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
Str_DatabasePath:string; //定义一个字符串变量,
begin
Str_DatabasePath:=ExtractFilePath(Application.ExeName);
Str_DatabasePath:=Str_DatabasePath+'db\db1.mdb';{下面的绝对路径怎么改?}
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Delphi\210\db\db1.mdb;Persist Security Info=False //这里我是通过双击,得到连接的。是不是只要把Data Source这里改为相对路径就可以了???这样改过之后,我还在DATA MODULE这个窗体上放置了ADOQuery1,通过点击connection属性,这样得到的路径还是绝对路径吗?是否应该通过手工写代码才能实现这样的连接呢?
end.小弟新手上路,很多东西都不懂,希望各位热心的朋友能帮助我解决这样令我头痛的问题,多谢了!!!
var
path,Str_DatabasePath:string;
begin
Str_DatabasePath:=ExtractFilePath(Application.ExeName);
Str_DatabasePath:=Str_DatabasePath+'db\db1.mdb';
path:=extractfilepath(paramstr(0));
adoconnection1.Provider := 'Microsoft.Jet.OLEDB.4.0;Data Source='
+Str_DatabasePath+';Persist Security Info=False';
adoconnection1.Connected := true;
end;