Vb.net 文本文件中的数据库路径

Vb.net 文本文件中的数据库路径,vb.net,Vb.net,我试图从文本文件中给出数据库的路径,但SqlConnection无法识别 Public Class Form1 Dim server As String = "" Dim con As New SqlConnection(server) Dim cmd As New SqlCommand Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load con

我试图从文本文件中给出数据库的路径,但
SqlConnection
无法识别

Public Class Form1
    Dim server As String = ""
    Dim con As New SqlConnection(server)
    Dim cmd As New SqlCommand

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        con.open()
        Dim file2 As String = "C:\Users\alex\Desktop\yes.DAT"
        Dim reader As New StreamReader(file2)
        server = reader.ReadToEnd
        MessageBox.Show(server)
    End Sub
End Class
Private conString As String

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    conString = File.ReadAllText("C:\Users\alex\Desktop\yes.DAT")
End Sub

Private Sub RetrieveData()
    Dim dt As New DataTable
    Using cn As New SqlConnection(conString),
            cmd As New SqlCommand("Select * From SomeTable;", cn)
        cn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    DataGridView1.DataSource = dt
End Sub

您正在创建
SqlConnection
对象,而
server
的值仍然是空的
字符串。在从文件中读取连接字符串之前,还尝试打开该连接。您需要在读取连接字符串后创建连接或设置
ConnectionString
属性,然后将其打开。

Dim con As New SqlConnection(server)
发生在类构造时,但
Form1\u Load
直到类构造后才会发生。你需要颠倒顺序

Private conString As String

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    conString = File.ReadAllText("C:\Users\alex\Desktop\yes.DAT")
End Sub

Private Sub RetrieveData()
    Dim dt As New DataTable
    Using cn As New SqlConnection(conString),
            cmd As New SqlCommand("Select * From SomeTable;", cn)
        cn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    DataGridView1.DataSource = dt
End Sub
公共类表单1
将服务器设置为字符串=“”
Dim con作为SqlConnection
Dim cmd作为新的SqlCommand()
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
将reader用作新的StreamReader(“C:\Users\alex\Desktop\yes.DAT”)
con=新的SqlConnection(reader.ReadToEnd())
终端使用
con.open()
端接头
末级

然而,我会在类级别声明一个SqlConnection,而不是像这样保持它的打开状态。您应该使用
Using
块打开它,并在
结束Using
之前在内部执行您需要的操作,这样当您使用完它时,它就会被处理掉,类似于我使用您的
StreamReader

读取文件时使用的File类

Private conString As String

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    conString = File.ReadAllText("C:\Users\alex\Desktop\yes.DAT")
End Sub

Private Sub RetrieveData()
    Dim dt As New DataTable
    Using cn As New SqlConnection(conString),
            cmd As New SqlCommand("Select * From SomeTable;", cn)
        cn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    DataGridView1.DataSource = dt
End Sub
请不要将表单级变量用于连接和命令。每次使用后都需要关闭和处置。连接字符串在表单级别是良好的。您可能希望在几个方法中使用它,毕竟,它只是一个字符串,不需要在代码中处理

Private conString As String

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    conString = File.ReadAllText("C:\Users\alex\Desktop\yes.DAT")
End Sub

Private Sub RetrieveData()
    Dim dt As New DataTable
    Using cn As New SqlConnection(conString),
            cmd As New SqlCommand("Select * From SomeTable;", cn)
        cn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    DataGridView1.DataSource = dt
End Sub

请您在这里澄清一下,您正在加载的文件的内容是什么?实际上,您正在打开文件并读取内容,但没有关闭文件。如果要使用
StreamReader
,请使用
语句创建它,这样它将自动关闭。不过在这种情况下,只需调用
File.ReadAllText
,它将在内部执行所有打开、读取和关闭操作,只需将读取的文本传递给您,即
Dim connectionString=File.ReadAllText(filePath)
。通常在应用程序配置文件中存储连接字符串。有内置的功能从那里读取它们。这是一个XML文件,因此如果需要可以手动编辑。非常抱歉!我没听清楚。你说得很清楚。我将在稍后删除我的评论。喜欢帅哥吗?(漂亮?)狗。@Mary谢谢你,他三个月前不幸去世:(非常抱歉。我理解你的悲伤。我仍然为我的伟大丹麦人哀悼,他们在将近30年前去世了。@Alex如果我的答案提供了解决方案,请点击答案左边的复选标记(勾号)接受。