跨多个应用程序共享 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 collation 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
被销毁,连接将自动关闭。
我正在开发 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 collation 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
被销毁,连接将自动关闭。