Sharing ADOConnectionString accross multiple applications-Delphi

烈酒焚心 提交于 2019-12-08 07:09:07

问题


I am working on Delphi 7, SQL Server 2008 R2 and i am using ADO to connect to database.

My Connection String:

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

when i make my TADOconnection.Connected to True Connectin string is changing it to

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TESTDataBase;Data Source=TestDataSource; Use Procedure for Prepare=1; Auto Translate=True;Packet Size=4096;Workstation ID=MYMachineName;Use Encryption for Data=False;Tag with column collation when possible=False

There are more than 10 applications and i am planning to use the same connection string in all applications. so when i connect to FirstApplcation i am creating ADO Connection string, saving it in registry or some where so i can use the same connection string for other applications also.

Same user can run more than one application(it can be 2 or 3 or 5 applications).

Here i have 3 questions

1)when i need to share connection?

i mean create the connection string and share the same Connection string(write to registry or some where)

or

create the connection string , connect to database and share the same connection string(write to registry or some where)

2) In my application when i get the shared connection string do i need to connect to database again(TADOConnection.Connected= true)? i think i should connect it again, since it is different application :)

3) For all my applications i open connection at application(main form) form show and i will be closing connection at application(main form) form close.So connection will get close only when application closes and TADOCOnnection.KeepConnection = True. is this create performance issues or burden on database server?


回答1:


A shared UDL file can be good for sharing a connection. Use the required properties only for your connection string, i.e:

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

Don't worry about the extra properties that are added by the ADO after you connect. it's the default properties for the specific provider you use (SQLOLEDB.1). The same properties will be set in all your other applications if you use the exact connection string or UDL file (with a common provider). ADO connections to SQL Server are pooled by default.

You can simply set e.g.

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

A good place to hold a shared connection object (TADOConnection) is in a shared Data Module for the entire application. Open it in the data module or the main form OnCreate event. The connection is automatically closed once the TADOConnection is destroyed.



来源:https://stackoverflow.com/questions/42225816/sharing-adoconnectionstring-accross-multiple-applications-delphi

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!