检查数据库设置 - &gt;变量&#39; <variablename>&#39;在被赋值之前使用

时间:2016-03-06 12:01:02

标签: sql xml database

我正在编写一个简单的函数,如果我的sqlDB连接正常,则返回true。我从XML文件中读取了我的数据库设置,并且我确定这部分是有效的,因为我的值(服务器,数据库,用户,密码)在读取xml后得到了一个值。当我想在我的连接字符串中使用这些变量时,我说使用它们没有任何价值吗?

Public Function TestDBconnection() As Boolean

    'Read settings from XMLfile'
    Dim server, database, user, password As String

    Try
        If System.IO.File.Exists(defaultdirectory & "\Settings.xml") = True Then
            Using XmlSettingsReader As XmlReader = New XmlTextReader(defaultdirectory & "\Settings.xml")
                While (XmlSettingsReader.Read())
                    Dim type = XmlSettingsReader.NodeType
                    If (type = XmlNodeType.Element) Then
                        If (XmlSettingsReader.Name = "Server") Then
                            server = XmlSettingsReader.ReadInnerXml.ToString
                        End If
                        If (XmlSettingsReader.Name = "Database") Then
                            database = XmlSettingsReader.ReadInnerXml.ToString
                        End If
                        If (XmlSettingsReader.Name = "User") Then
                            user = XmlSettingsReader.ReadInnerXml.ToString
                        End If
                        If (XmlSettingsReader.Name = "Password") Then
                            password = XmlSettingsReader.ReadInnerXml.ToString
                        End If
                    End If
                End While
                XmlSettingsReader.Close()
            End Using
        End If

        Using sqlcon As SqlConnection = New SqlConnection("server=@server ;uid=@user ;password=@password ;database=@database")
            sqlcmd.Parameters.AddWithValue("@server", server)
            sqlcmd.Parameters.AddWithValue("@user", user)
            sqlcmd.Parameters.AddWithValue("@database", database)
            sqlcmd.Parameters.AddWithValue("@password", password)
            sqlcon.Open()
            Return (sqlcon.State = ConnectionState.Open)
            sqlcon.Close()
        End Using
    Catch result1 As SqlException
        Return False

    Catch result2 As Exception
        Return False
    End Try

End Function

1 个答案:

答案 0 :(得分:0)

您是否尝试设置停止标记并逐步完成?什么是读入XmlReader的程序?所有If会发生什么?

我确定根本没有触及为变量设置值的行。因此,您的变量仍未初始化。

尝试为它们设置默认值,你不会得到之前得到的错误......但是你必须找出哪些变量没有设置。

可能,根本没有档案......