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

标签 delphi delphi-7

我正在使用 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/

相关文章:

delphi - Delphi XE 中的类型转换问题

delphi - 调整表单大小,同时保持纵横比

multithreading - 为什么 WaitForMultipleObjects 在使用多个线程句柄时会失败?

delphi - 用delphi创建系统进程

delphi - 如何在delphi7中处理unicode数据

delphi - 如何使用 TypInfo 单元获取 'record' 类型的属性

delphi - TStringList.LoadFromFile Unicode

delphi - 这样做的目的是什么(MyJobject as ILocalObject).GetObjectID

delphi - 如何在 Delphi 7 中将字符串存储在流中并在 XE6 中恢复移动应用程序?

delphi - 如果我有多个冷却带,如何移除冷却杆上的所有 Handlebars ?