跨多个应用程序共享 ADO 连接字符串-Delphi

Sharing ADOConnectionString accross multiple applications-Delphi

我正在开发 Delphi 7,SQL Server 2008 R2,我正在使用 ADO 连接到数据库。

我的连接字符串:

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TESTDataBase;Data Source=TestDataSource

当我将 TADOconnection.Connected 设置为 True Connectin 字符串时,它正在更改为

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TESTDataBase;Data Source=TestDataSource; 使用程序准备=1; Auto Translate=True;Packet Size=4096;Workstation ID=MYMachineName;Use Encryption for Data=False;Tag with column collat​​ion when possible=False

有超过 10 个应用程序,我打算在所有应用程序中使用相同的连接字符串。 因此,当我连接到 FirstApplcation 时,我正在创建 ADO 连接字符串,将其保存在注册表或某些地方,这样我也可以将相同的连接字符串用于其他应用程序。

同一用户可以运行多个应用程序(可以是2个或3个或5个应用程序)。

这里我有3个问题

1)什么时候需要共享连接?

我的意思是创建连接字符串并共享相同的连接字符串(写入注册表或某个地方)

创建连接字符串,连接到数据库并共享相同的连接字符串(写入注册表或其他地方)

2) 在我的应用程序中,当我获得共享连接字符串时,我是否需要再次连接到数据库(TADOConnection.Connected= true)?我想我应该重新连接它,因为它是不同的应用程序:)

3) 对于我所有的应用程序,我在应用程序(主窗体)窗体显示中打开连接,我将在应用程序(主窗体)窗体关闭连接 close.So 只有当应用程序关闭并且 TADOCOnnection.KeepConnection = 正确。这会造成性能问题或数据库服务器负担吗?

共享 UDL 文件可以很好地共享连接。仅对您的连接字符串使用 必需的 属性,即:

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TESTDataBase;Data Source=TestDataSource

不用担心连接后 ADO 添加的额外属性。它是您使用的特定提供程序的默认属性 (SQLOLEDB.1)。如果您使用完全相同的连接字符串或 UDL 文件(使用公共提供程序),则将在所有其他应用程序中设置相同的属性。 默认情况下,到 SQL 服务器的 ADO 连接被合并。

您可以简单地设置例如

MyConnection.ConnectionString := 'FILE NAME=c:\my_shared_path\shared.udl';
MyConnection.Open;

保存共享连接对象 (TADOConnection) 的好地方是在整个应用程序的共享数据模块中。 在数据模块或主窗体 OnCreate 事件中打开它。 一旦 TADOConnection 被销毁,连接将自动关闭。