ConnectionString DataSource ='%'德尔斐的房产

时间:2017-08-31 12:10:17

标签: database delphi datasource connection-string

我试图动态创建我的连接字符串,但我不知道如何继续在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;';

1 个答案:

答案 0 :(得分:1)

您的应用程序应该存储对数据库位置的引用(例如在注册表中)并根据需要连接连接字符串,或者将数据库保存在始终可以找到它的标准位置(例如{ {1}}文件夹)并将连接字符串指向那里。

在任何情况下,您都应永远保留ProgramData中的可写数据。自Windows Vista以来,应用程序一直强制在Program Files文件夹之外写入文件。应用程序文件夹是严格只读的。在安装过程中唯一适合写入Program Files的时间。

保存在注册表中......

Program Files

保存在ProgramData中......

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 - 请原谅我的伪代码,它非常粗糙,但只是为了证明。