ExecuteNonQuery:Connection属性尚未初始化VB

时间:2013-05-14 20:35:46

标签: vb.net

这里得到一个错误,不知道为什么它没有打开连接。希望有人可以帮助我。

 Protected Sub Btn_Submit_Click(ByVal sender As System.Object, e As System.EventArgs) Handles Btn_Submit.Click
    Dim Sqlstr As String
    Dim con As SqlConnection
    Dim connectionString As String = "Data Source=DB\TEST;Initial Catalog=Orders;Integrated Security=True"
    Dim cmdInsert As New SqlCommand(Sqlstr, con)
    Sqlstr = "insert into customers(FirstName,LastName,Email,Phone,Address,City,State,Zip) values (@FirstName,@LastName,@Email,@Phone,@Address,@City,@State,@Zip)"
    Try
        Using connection As New SqlConnection(connectionString)
            connection.Open()
            cmdInsert.Parameters.Add("@FirstName", Data.SqlDbType.NVarChar).Value = FirstName.Text()
            cmdInsert.Parameters.Add("@LastName", Data.SqlDbType.NVarChar).Value = LastName.Text
            cmdInsert.Parameters.Add("@Email", Data.SqlDbType.NVarChar).Value = Email.Text
            cmdInsert.Parameters.Add("@Phone", Data.SqlDbType.NChar).Value = Phone.Text
            cmdInsert.Parameters.Add("@Address", Data.SqlDbType.NVarChar).Value = Address.Text
            cmdInsert.Parameters.Add("@City", Data.SqlDbType.NVarChar).Value = City.Text
            cmdInsert.Parameters.Add("@State", Data.SqlDbType.NVarChar).Value = State.Text
            cmdInsert.Parameters.Add("@Zip", Data.SqlDbType.NChar).Value = Zip.Text
            cmdInsert.ExecuteNonQuery()
            connection.Close()
        End Using
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

4 个答案:

答案 0 :(得分:3)

你有两个SqlConnection对象 - 一个在Dim con As SqlConnection中,另一个在你的using语句中。在using语句之后创建SqlCommand并将连接传递给构造函数。

答案 1 :(得分:2)

你的范围错误 - 在实例化和打开你试图用来执行命令的实际SQL连接之前,你实例化你的SqlCommand

我相信这会修复您的代码(我将插入调用移到了using范围内):

Protected Sub Btn_Submit_Click(ByVal sender As System.Object, e As System.EventArgs) Handles Btn_Submit.Click
Dim Sqlstr As String
Dim connectionString As String = "Data Source=DB\TEST;Initial Catalog=Orders;Integrated Security=True"
Sqlstr = "insert into customers(FirstName,LastName,Email,Phone,Address,City,State,Zip) values (@FirstName,@LastName,@Email,@Phone,@Address,@City,@State,@Zip)"

Try
    Using connection As New SqlConnection(connectionString)

        connection.Open()

        Dim cmdInsert As New SqlCommand(Sqlstr, connection)  <----- **** Moved this here, changed the connection

        cmdInsert.Parameters.Add("@FirstName", Data.SqlDbType.NVarChar).Value = FirstName.Text()
        cmdInsert.Parameters.Add("@LastName", Data.SqlDbType.NVarChar).Value = LastName.Text
        cmdInsert.Parameters.Add("@Email", Data.SqlDbType.NVarChar).Value = Email.Text
        cmdInsert.Parameters.Add("@Phone", Data.SqlDbType.NChar).Value = Phone.Text
        cmdInsert.Parameters.Add("@Address", Data.SqlDbType.NVarChar).Value = Address.Text
        cmdInsert.Parameters.Add("@City", Data.SqlDbType.NVarChar).Value = City.Text
        cmdInsert.Parameters.Add("@State", Data.SqlDbType.NVarChar).Value = State.Text
        cmdInsert.Parameters.Add("@Zip", Data.SqlDbType.NChar).Value = Zip.Text
        cmdInsert.ExecuteNonQuery()

        connection.Close()
    End Using
Catch ex As Exception
    MsgBox(ex.Message)
End Try

答案 2 :(得分:0)

 Protected Sub Btn_Submit_Click(ByVal sender As System.Object, e As System.EventArgs) Handles Btn_Submit.Click
    Dim Sqlstr As String

    ' =================================================
    ' This is a declaration, not an instantiation
    ' =================================================
    Dim con As SqlConnection      

    Dim connectionString As String = "Data Source=DB\TEST;Initial Catalog=Orders;Integrated Security=True"

    ' =================================================
    ' con is Nothing here
    ' =================================================
    Dim cmdInsert As New SqlCommand(Sqlstr, con)     

    Sqlstr = "insert into customers(FirstName,LastName,Email,Phone,Address,City,State,Zip) values (@FirstName,@LastName,@Email,@Phone,@Address,@City,@State,@Zip)"
    Try

        ' =================================================
        ' connection is not what you passed to cmdInsert
        ' =================================================
        Using connection As New SqlConnection(connectionString)
            connection.Open()

答案 3 :(得分:0)

连接Sting属性错误始终在未声明/续订连接时发生

解决方案很简单

dim con as new SqlConnection 
con.connectionString = "Provide your SQL connection"
con.open
'write code or action you want to perform
con.close

希望它有所帮助。