跨多个应用程序共享ADOConnectionString-Delphi

时间:2017-02-14 12:09:21

标签: delphi delphi-7

我正在研究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;数据包大小= 4096;工作站ID = MYMachineName;对数据使用加密= False;可能时使用列排序标记= False

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

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

这里我有3个问题

1)当我需要分享连接时?

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

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

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

3)对于我的所有应用程序,我在应用程序(主窗体)窗体show中打开连接,我将在应用程序(主窗体)窗体关闭时关闭连接。仅当应用程序关闭且TADOCOnnection.KeepConnection = True时,连接才会关闭。这会在数据库服务器上造成性能问题或负担吗?

1 个答案:

答案 0 :(得分:2)

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

  

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

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

您可以简单地设置例如。

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

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