我的程序连接的是ACCESS数据库,打包后给客户时,数据库的路径成了问题,怎么才能解决,或者有没有在程序运行时自动搜索数据库路径的代码.谢谢,在线等候~~~~~~~~
解决方案 »
- 第三方控件的TRzGroup怎么改背景色啊
- 来比比谁最晚
- 一个console如何播放网上的mp3歌曲
- 如何用一个ADOconnection实现多个窗口的共用?
- 游戏中显示网页
- 大家快来看看这是怎么回事?
- 大大们,最近好穷,分不多啦,在线等!bde中table+dbgrid可实现下拉查找字段,那query+dbgrid如何实现?
- 如何创建一个带FORM的DLL----请给出实例,是完整的实例?菜鸟问题,:>呵呵
- 如何设置ShellTreeView为只读,不能修改内容?
- 高分求解!
- DBgrid中有一个字段内容很多,怎样让这个字段的内容以多行显示?
- 请问怎样通过WINDOWS消息传递比较大的数据在两个程序之间,在线等
不要先赋值后编译;
在程序运行时,在连接控件关闭状态下,为其ConnectionString赋值
譬如ADO
adoConn.close;
adoConn.connectionString:= 'P....' + ExtractFilePath(Application.ExeName) + 'xxx.mdb' + '....";
adoConn.open;
...
// 带密码
//CONNSTRING := connstring + ExtractFilePath(paramstr(0)) + 'Kq_Std.mdb;Persist Security Info=False;Jet OLEDB:DataBase password=service';
//不带密码
CONNSTRING := connstring + ExtractFilePath(paramstr(0)) + 'Kq_Std.mdb;Persist Security Info=False;';
AdoLogin.ConnectionString := CONNSTRING;
AdoLogin.LoginPrompt := FALSE;
AdoLogin.KeepConnection := TRUE;
inifiles
implementation
uses FRM_MAIN, dm_master;
var SVSHRMINI: tinifile;
filename: string;
PassBool:boolean; filename := ExtractFilePath(paramstr(0)) + 'Kq_Std.ini';
SVSHRMINI := TInifile.Create(filename);
//判断数据库类型
netstate:= svshrmini.ReadBool('DataBase State', 'NETWORK', false);
if not netstate then
//单机状态
begin
CONNSTRING := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
// CONNSTRING := connstring + ExtractFilePath(paramstr(0)) + 'Kq_Std.mdb;Persist Security Info=False;Jet OLEDB:DataBase password=service';
CONNSTRING := connstring + ExtractFilePath(paramstr(0)) + 'Kq_Std.mdb;Persist Security Info=False;';
ServerType := 'ACCESS';
end
else
begin
// 网络数据库状态
Servername := SVSHRMINI.readstring('Sql State', 'SERVER', '(Loacl)');
Serveruse := SVSHRMINI.readstring('Sql State', 'UID', 'sa');
serverpw:=SVSHRMINI.readstring('Sql State', 'PWD', '');
ServerDB := SVSHRMINI.readstring('Sql State', 'DATABASE', 'Kq_Std');
CONNSTRING := 'Provider=SQLOLEDB.1;password='+serverpw+';Persist Security Info=true;User ID=';
CONNSTRING := CONNSTRING + serveruse + ';Initial Catalog=' + serverdb;
CONNSTRING := CONNSTRING + ';Data Source=' + servername;
ServerType := 'MSSql'
end;
SVSHRMINI.Destroy;
AdoLogin.ConnectionString := CONNSTRING;
if netstate then
begin
adologin.Provider:='SQLOLEDB';
adologin.DefaultDatabase :=ServerDB;
end ;
AdoLogin.LoginPrompt := FALSE;
AdoLogin.KeepConnection := TRUE;/////可以勒吧,我就是这样弄的
var
adoq: TADOQuery;
begin
adoConn.Close;
adoConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'
+'Password="";Data Source='
+ ExtractFilePath(Application.ExeName)
+ 'db1.mdb;Persist Security Info=True';
adoConn.Open;
adoq:= TADOQuery.Create(nil);
adoq.Connection:= adoConn;
adoq.SQL.Clear;
adoq.SQL.Add('select * from table1');
adoq.Open;
ShowMessage(adoq.Fields[1].AsString);
adoq.Close;
adoq.Free;