65.9K
CodeProject 正在变化。 阅读更多。
Home

ADO.NET 和 UDL

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.83/5 (5投票s)

2005年9月30日

2分钟阅读

viewsIcon

48891

downloadIcon

607

使用 SQLClient 和 OracleClient 的数据链接文件。

引言

我曾经喜欢使用 OLE DB 时通过引用数据链接文件来简化连接字符串的创建。这是一种灵活的方式,并且减少了创建引用开发服务器的打包安装的麻烦。然后 ADO.NET 引入了针对 SQL Server 和 Oracle 的优化连接器的概念。令我惊讶的是,这些优化连接器无法读取数据链接文件中存储的连接字符串。然后我不得不诉诸将连接字符串保存到文本文件中,并在需要更改连接时手动编辑它。这简直是重复造轮子。不可接受!

使用代码

要使用代码,请在您的项目中导入 cConnection 类。然后像这样创建一个对象实例

Friend WithEvents oConnection As New _
                  cConnection("MyDataLink.udl")

如果未包含数据链接文件的名称,则使用默认名称。数据链接文件创建在调用程序集的同一目录中。

下一步是将连接字符串传递给连接对象。

m_cnAuthors.ConnectionString = oConnection.GetSQLConnectionString()

数据链接文件创建

有时,人们会忘记打包数据链接文件或忘记将连接更改为适当的服务器。不得不痛苦地导航到安装目录并在客户面前创建它。他们不喜欢这样。他们期望通常的下一步、下一步、下一步...完成安装方式。正是考虑到这一点,才包含了数据链接文件创建的功能。

要创建一个数据链接文件,请创建一个新的空文本文件,将其扩展名更改为 .udl,然后要求操作系统通过双击该文件来调用数据链接应用程序。这被翻译成

'Create an empty text file
Dim fs As New System.IO.FileStream(strFileName, System.IO.FileMode.CreateNew)
fs.Close()


'Call Data Link App and write information to it
Dim psiProcess As New ProcessStartInfo
psiProcess.FileName = strFileName
Dim pProcess As Process = Process.Start(psiProcess)
pProcess.WaitForInputIdle()
pProcess.WaitForExit()
pProcess.Close()

这里的技巧是在启动数据链接应用程序进程之前关闭 filestream。否则我们会收到错误。

读取数据链接文件

数据链接应用程序为参数编写了各种令人愉悦的内容,但只有少数几个对于建立成功的连接是必不可少的。为了找到所有适当的参数,我不得不拆分连接字符串并将其放入一个数组中。由于参数不总是以特定顺序排列,因此必须在循环中进行搜索。

For Each strString In strArray

            If strString.IndexOf("Provider") > -1 Then
                strProvider = strString.Substring(strString.IndexOf("Provider"))
            End If

            If strString.IndexOf("Password") > -1 Then
                m_strPassword = strString
            End If
            ...
            ...
            ...
            
Next

然后搜索到的参数被重建并传递给适当的连接对象。

© . All rights reserved.