我试图动态创建我的连接字符串,但我不知道如何继续在PC上本地读取数据源属性位置,例如当程序和数据库从一个pc移动到另一个pc时到达数据库的路径发生了变化,因此我希望能够直接从数据库所在的PC上读取数据。基本上我希望能够动态地从电脑中获取大胆的部分。我仍然是delphi的相对新手,所以我将非常感谢您详细了解正在发生的事情和我需要做的事情。
连接字符串如下,DataSource是我想要能够动态接收的
con.ConnectionString:=' Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ Users \ db.mdb; Mode = ReadWrite; Persist Security Info = False;';
答案 0 :(得分:1)
您的应用程序应该存储对数据库位置的引用(例如在注册表中)并根据需要连接连接字符串,或者将数据库保存在始终可以找到它的标准位置(例如{ {1}}文件夹)并将连接字符串指向那里。
在任何情况下,您都应永远保留ProgramData
中的可写数据。自Windows Vista以来,应用程序一直强制在Program Files
文件夹之外写入文件。应用程序文件夹是严格只读的。在安装过程中唯一适合写入Program Files的时间。
Program Files
var
R: TRegistry;
begin
R:= TRegistry.Create(KEY_READ);
try
R.RootKey:= HKEY_LOCAL_MACHINE;
if R.OpenKey('Software\MySoftware', False) then begin
try
con.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+R.ReadString('MyDatabasePath')+'; Mode=ReadWrite;Persist Security Info=False;';
finally
R.CloseKey;
end;
end;
finally
R.Free;
end;
end;
PS - 请原谅我的伪代码,它非常粗糙,但只是为了证明。