我正在使用 Delphi 7、SQL Server 2008 R2 并且我正在使用 ADO 连接到数据库。
我的连接字符串:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;初始目录=TESTDataBase;数据源=TestDataSource
当我让我的 TADOconnection.Connected 到 True Connectin 字符串将其更改为
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TESTDataBase;Data Source=TestDataSource; Prepare=1的使用程序;
自动翻译=True;数据包大小=4096;工作站 ID=MYMachineName;对数据使用加密=False;尽可能使用列排序标记=False
有超过 10 个应用程序,我计划在所有应用程序中使用相同的连接字符串。
因此,当我连接到 FirstApplcation 时,我正在创建 ADO 连接字符串,将其保存在注册表或某个位置,这样我也可以将相同的连接字符串用于其他应用程序。
同一用户可以运行多个应用程序(可以是 2 个或 3 个或 5 个应用程序)。
在这里我有3个问题
1)我什么时候需要共享连接?
我的意思是创建连接字符串并共享相同的连接字符串(写入注册表或某个地方)
或者
创建连接字符串,连接到数据库并共享相同的连接字符串(写入注册表或某个地方)
2)在我的应用程序中,当我获得共享连接字符串时,我是否需要再次连接到数据库(TADOConnection.Connected= true)?我想我应该再次连接它,因为它是不同的应用程序:)
3)对于我的所有应用程序,我在应用程序(主窗体)窗体显示处打开连接,我将在应用程序(主窗体)窗体关闭时关闭连接。因此,只有在应用程序关闭并且 TADOCOnnection.KeepConnection = True 时连接才会关闭。这会给数据库服务器带来性能问题或负担吗?
最佳答案
共享 UDL
文件可以很好地共享连接。仅为您的连接字符串使用所需的属性,即:
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
自动关闭连接被摧毁。
关于delphi - 跨多个应用程序共享 ADO 连接字符串-Delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42225816/