您的位置:首页 > 数据库

VB.NET 与*.udl文件数据库连接调用

2007-02-07 14:44 411 查看
 以前用VB6时连接数据库时,连接字符串调用*.udl文件,觉得很方便.但在VB.NET里调用*.udl文件时,有很大不同,VB6简单的写上:file name=c:/*.dul就行了,但VB.net是通过读取文件的方式来处理的,下面是全部代码。与大家共享:在您用时只要调用这个类:

Dim MyconnData As New ConnData

public Myconn As New SqlConnection(MyconnData.GetSQLConnectionString)


Imports System


Imports System.IO








Public Class ConnDataClass ConnData


    Private m_strFileName As String


    Private m_strConnectionText As String




    Private m_strPesistSecurity As String


    Private m_strIntegradedSecurity As String


    Private m_strReconstructed As String




    Private m_strDefaultFilename As String


    Private m_strDatasource As String


    Private m_strPassword As String


    Private m_strUserID As String


    Private m_strCatalog As String 'Database


    Public Event CloseApplication()




    Public Sub New()Sub New()


        m_strDefaultFilename = "DataLink.udl"


        ReadFromFile()


        SplitConnectionString()


    End Sub




   












    Public Function GetSQLConnectionString()Function GetSQLConnectionString() As String


        ReconstructSQLConnectionString()


        Return m_strReconstructed


    End Function




    Private Sub ReconstructSQLConnectionString()Sub ReconstructSQLConnectionString()




        m_strReconstructed = m_strPesistSecurity & ";"




        If Not IsNothing(m_strIntegradedSecurity) Then


            m_strReconstructed &= m_strIntegradedSecurity & ";"


        Else


            m_strReconstructed &= m_strPassword & ";"


            If Not m_strUserID.Length = 0 Then


                m_strReconstructed &= m_strUserID & ";"


            End If




        End If




        m_strReconstructed &= m_strCatalog & ";"


        m_strReconstructed &= m_strDatasource & ";"




        m_strCatalog = m_strCatalog.Substring(16)


        m_strDatasource = m_strDatasource.Substring(12)


        If Not IsNothing(m_strPassword) Then


            m_strPassword = m_strPassword.Substring(9)


            m_strUserID = m_strUserID.Substring(8)


        End If




    End Sub






格式化从*.udl文件中,读取的字符串#Region "格式化从*.udl文件中,读取的字符串"








    Private Sub SplitConnectionString()Sub SplitConnectionString()


        Dim strArray As String() = Nothing


        Dim strString As String


        Dim strProvider As String




        Dim strDRIVER As String


        Dim strSERVER As String


        Dim strUID As String


        Dim strDATABASE As String






        strArray = m_strConnectionText.Split(";")




        If strArray(0).IndexOf("[oledb]") = -1 Then


            Dim nAnswer As DialogResult


            nAnswer = MessageBox.Show("This file cannot be read" & vbCr & _


            "Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)




            If nAnswer = DialogResult.Yes Then


                ReadFromFile()


                SplitConnectionString()


                Exit Sub


            Else


                Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"


                Err.Raise(vbObjectError + 999, , strDescription)


                RaiseEvent CloseApplication()


            End If


        End If






        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




            If strString.IndexOf("Data") > -1 Then


                m_strDatasource = strString


            End If




            If strString.IndexOf("User") > -1 Then


                m_strUserID = strString


            End If




            If strString.IndexOf("Initial") > -1 Then


                m_strCatalog = strString


            End If




            If strString.IndexOf("Integrated") > -1 Then


                m_strIntegradedSecurity = strString


            End If




            If strString.IndexOf("Persist") > -1 Then


                m_strPesistSecurity = strString


            End If


            If strString.IndexOf("DRIVER") > -1 Then


                strDRIVER = strString.Substring(strString.IndexOf("DRIVER"))


            End If


            If strString.IndexOf("SERVER") > -1 Then


                strSERVER = strString


            End If


            If strString.IndexOf("UID") > -1 Then


                strUID = strString


            End If


            If strString.IndexOf("DATABASE") > -1 Then


                strDATABASE = strString


                strDATABASE = strDATABASE.Remove(strDATABASE.Length - 3, 3)


            End If




        Next




        'Check if the connection string connects to SQLServer or Oracle Server.


        If strProvider.IndexOf("MSDASQL") > -1 Then


            If strDRIVER.IndexOf("SQL Server") > -1 Then




                m_strDatasource = "Data Source" & strSERVER.Substring(6)


                If strUID.Length > 0 Then


                    m_strUserID = "User ID" & strUID.Substring(3)


                End If


                m_strCatalog = "Initial Catalog " & strDATABASE.Substring(8)




            Else


                'not sqlserver database


                Dim nAnswer As DialogResult


                nAnswer = MessageBox.Show("This file does not connect to SQL Server Database" & vbCr & _


                "Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)




                If nAnswer = DialogResult.Yes Then


                    ReadFromFile()


                    SplitConnectionString()


                    Exit Sub


                Else


                    Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"


                    Err.Raise(vbObjectError + 999, , strDescription)


                End If


            End If




        ElseIf strProvider.IndexOf("SQLOLEDB") > -1 Then


            m_strDatasource = m_strDatasource.Remove(m_strDatasource.Length - 2, 2)




        ElseIf strProvider.IndexOf("OraOLEDB") > -1 Then  'Oracle provider for OLEDB




        ElseIf strProvider.IndexOf("MSDAORA") > -1 Then 'Microsoft Provider for Oracle




        Else


            'not Oracle or sqlserver database Connection


            Dim nAnswer As DialogResult


            nAnswer = MessageBox.Show("This file does not connect to Oracle Server or SQL Database" & vbCr & _


            "Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)




            If nAnswer = DialogResult.Yes Then


                ReadFromFile()


                SplitConnectionString()


                Exit Sub


            Else


                Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"


                Err.Raise(vbObjectError + 999, , strDescription)


            End If


        End If






    End Sub


#End Region












读取*.UDL文件内容,如是*.UDL文件不存在,则创建#Region "读取*.UDL文件内容,如是*.UDL文件不存在,则创建"








    Private Sub ReadFromFile()Sub ReadFromFile()


        Dim myStreamReader As StreamReader


        Dim strFileName As String


        Try




            m_strFileName = AppDomain.CurrentDomain.BaseDirectory & m_strDefaultFilename


            strFileName = m_strFileName




            'If the UDL file cannot be found Create a new one


            If Not File.Exists(m_strFileName) Then


                m_strFileName = strFileName


                CreateUDLFile(strFileName)


            End If




            myStreamReader = File.OpenText(m_strFileName)


            ' Read the entire file in one pass


            m_strConnectionText = myStreamReader.ReadToEnd()


        Catch exc As Exception




            ' Show the exception to the user.


            Dim strDescription As String = "File could not be opened or read." + vbCrLf + _


                "Please verify that the filename is correct, " + _


                "and that you have read permissions for the desired " + _


                "directory." + vbCrLf + vbCrLf + "Exception: " + exc.Message


            Err.Raise(vbObjectError + 991, , strDescription)


            RaiseEvent CloseApplication()


        Finally


            ' Close the object if it has been created.


            If Not myStreamReader Is Nothing Then


                myStreamReader.Close()


            End If


        End Try




    End Sub








    Private Sub CreateUDLFile()Sub CreateUDLFile(ByVal strFileName As String)


        '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 prProcess As New ProcessStartInfo


        prProcess.FileName = strFileName


        Dim pProcess As Process = Process.Start(prProcess)


        pProcess.WaitForInputIdle()


        pProcess.WaitForExit()


        pProcess.Close()




        'Check if the created file is a valid UDl file, if not, delete it.


        Dim myStreamReader As System.IO.StreamReader = System.IO.File.OpenText(strFileName)


        Dim m_strConnectionText As String = myStreamReader.ReadToEnd()


        myStreamReader.Close()




        Dim strArray() As String = m_strConnectionText.Split(";")


        If strArray(0).IndexOf("[oledb]") = -1 Then


            If System.IO.File.Exists(strFileName) Then


                System.IO.File.Delete(strFileName)


            End If


        End If


    End Sub


#End Region


End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息