0

我有一个名为 MainModule 的数据模块,其中包含一个 ADOConnection 和另一个名为 DatabaseModule 的数据模块,其中包含 ADOQuery 、 ADOStoredProcedure 等,它是 MainModule 的子类:

TDatabaseModule= class(TMainModule)
  • 这个模块是自动创建的。

在我的应用程序中,所有来自 DatabaseModule 的类子类,现在认为 2 类如下:

TMyClass1= class(TDatabaseModule)

TMyClass2= class(TDatabaseModule)

在我的应用程序中,我从 TMyClass1 和 TMyClass2 创建了一个实例,这两个类最终都连接到 MainModule 的 ADOConnection ,现在当我释放其中一个类时,MainModule 的连接被删除,其他类无法访问数据库,因为我的 ADOQuery 等已连接到MainModule 的 ADOConnection 和它的连接不活跃,我怎样才能保持连接活跃?

注意:我知道我可以将连接放在我的 DatabaseModule 中,并且每次创建类时,它都会为该类创建一个特定的连接实例,但它对数据库有过载,我在 SQL Server Profiler 中检查它。

谢谢 。

4

1 回答 1

1

MainModule 和 DatabaseModule 的 AutoCreation 将创建 2 个 ADOConnection 实例,加上 TDatabaseModule 子类的每个实例将再创建一个。

如何将您的 TMyClass1 实例(比如说 MyObj1)连接到 MainModule.ADOConnection?像 MyObj1.ADOConnection := MainModule.ADOConnection; ?

如果您现在销毁 MyObj1,它的所有组件也会被销毁,但是当您将 MyObj1.ADOConnection 引用更改为 MainModule.ADOConnection 时,您将失去 MainModule.ADOConnection。

您可以将 ADOConnection 组件移动到另一个 DataModule,将 ADOConnection 设置为 DatabaseModule(或 MainModule)属性,并在代码中分配使用数据集的 Connection 属性。而且您不应该自动创建您根本不打算使用的 DataModules。

于 2012-11-27T16:03:18.050 回答