繁体   English   中英

如何读取config.ini文件中的连接字符串

[英]how to read connection string in config.ini file

我在我的项目中有一个config.ini文件,这是保存在我的ini文件中的数据,如下所示。 配置 ,其中DESKTOP-UAGO7SB \\ SQLEXPRESS是数据源,admin是uid,xxxx是pwd我有以下代码来读取模块中config.ini文件中的数据

Public Function checkServer() As Boolean
    Try

        With frmSettings
            .OpenFileDialog1.FileName = Application.StartupPath & "\Config.ini"
            openedFileStream = .OpenFileDialog1.OpenFile()
        End With

        ReDim dataBytes(openedFileStream.Length - 1) 'Init 
        openedFileStream.Read(dataBytes, 0, openedFileStream.Length)
        openedFileStream.Close()
        tmpStr = System.Text.Encoding.Unicode.GetString(dataBytes)

        With frmSettings
            If Split(tmpStr, ":")(4) = "1" Then
                'network
                CnString = "Data Source=" & Split(tmpStr, ":")(0) & _
                           ";database=DBMISO" & _
                           ";uid=" & Split(tmpStr, ":")(2) & _
                           ";pwd=" & Split(tmpStr, ":")(3)

            Else
                'local
                'MsgBox(Split(tmpStr, ":")(1))
                CnString = "Data Source=" & Split(tmpStr, ":")(1) & _
                           ";Database=DBMISO; Trusted_Connection=yes;"
            End If
        End With
        Dim sqlCon As New SqlConnection
        sqlCon.ConnectionString = CnString
        sqlCon.Open()
        checkServer = True
        sqlCon.Close()
    Catch ex As Exception
        checkServer = False
    End Try
End Function

每当我调用CnString连接数据库时,都会给我一个错误

ConnectionString属性尚未初始化

许多事情在您的代码中没有意义或完全是错误的。
您正在使用NET,因此应使用Framework类和方法,而不要使用仅出于兼容性而保留的旧Visual Basic函数。

Try
    ' Read all the text from your config file
    Dim configData = File.ReadAllText(Application.StartupPath & "\Config.ini")
    ' Split it once and for all
    Dim configParts = configData.Split(":"c)

    ' You expect your config to have at least 4 parts
    if configParts.Length >= 4 Then

        ' Arrays start at zero so the 1 is at index 3 not 4
        If configParts(3) = "1" Then

            ' Again, arrays start at index zero.....
            CnString = "Data Source=" & configParts(0) & _
                       ";database=DBMISO" & _
                       ";uid=" & configParts(1) & _
                       ";pwd=" & configParts(2)
        Else
            'local
            CnString = "Data Source=" & configParts(0) & _
                       ";Database=DBMISO; Trusted_Connection=yes;"
        End If

        ' Enclose in a using statement to dispose the connection also in case
        ' of exceptions
        Using sqlCon = New SqlConnection(CnString)
            sqlCon.Open()
            checkServer = True
        End Using
    Else
        MessageBox.Show("Incorrect config.ini")
    End If
Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try
return checkServer

经过所有这些努力,也许您应该考虑NET具有经过验证的基础结构来处理连接字符串和配置文件。 您应该真正停止使用这种方法,并学习如何使用配置文件以及如何处理配置文件中连接字符串。

假设您有一个名为“ YourConnectionStringName”的字符串,这应该可以工作:

Dim cnString As String = Web.Configuration.WebConfigurationManager.ConnectionStrings("YourConnectionStringName").ConnectionString

您将需要添加对System.Web的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM