2013-05-14 170 views
0

在此處獲取錯誤不確定爲何不打開連接。希望有人能幫助我。ExecuteNonQuery:連接屬性尚未初始化VB

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 
+0

您需要將連接分配給該命令。或者,使用'cmdInsert = connection.CreateCommand()'。 –

+0

因此,只使用using語句進行連接(或者其他所有實現'IDisposable'的語句)。您無需首先聲明連接。這只是這種錯誤的來源。 –

回答

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 
3

你有兩個的SqlConnection對象 - 一個在昏暗爲體質的SqlConnection,然後又在你使用的語句。在using語句後創建SqlCommand並將連接傳遞給構造函數。

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() 
0

連接斯汀屬性錯誤總是當連接不宣/更新

發生

解決方法很簡單

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

希望它能幫助。

相關問題