2013-05-14 173 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 

希望它能帮助。

相关问题