2012-03-16 44 views
0

在command2.ExecuteNonQuery()中获得“连接属性未被正确初始化”的错误消息。连接属性没有被正确初始化

我有显示网格视图其结果(一个结果只)我试图得到这样的结果从SQL查询

Dim staffid = TextBox1.Text 
    Dim conn As New SqlConnection 
    conn.ConnectionString = SqlDataSource1.ConnectionString 

    Dim command1 As New SqlCommand("SELECT StaffDetails.StaffID, SUM(HolidayRequests.RequestTotalDays) AS Expr1, HolidayEntitlement.HoldayEntitlementID, HolidayEntitlement.UserName FROM HolidayRequests INNER JOIN StaffDetails ON HolidayRequests.Username = StaffDetails.UserName INNER JOIN HolidayEntitlement ON StaffDetails.UserName = HolidayEntitlement.UserName WHERE (StaffDetails.StaffID = staffID) GROUP BY StaffDetails.StaffID, HolidayRequests.ApprovalStatus, HolidayEntitlement.HoldayEntitlementID, HolidayEntitlement.UserName HAVING (HolidayRequests.ApprovalStatus = N'approved')", conn) 
    Dim command2 As New SqlCommand() 
    conn.Open() 
    Dim rdr As SqlDataReader 
    rdr = command1.ExecuteReader 
    Dim UpdateQuery As String 
    While (rdr.Read()) 

     UpdateQuery = "UPDATE HolidayEntitlement set Holiday_Taken = @Expr1 WHERE HolidayEntitlementID = @HolidayEntitlementID" 
     command2.Parameters.AddWithValue("@Expr1", rdr("Expr1").ToString()) 

     'run update query 

     command2.CommandText = UpdateQuery 
     command2.ExecuteNonQuery() 

End while 

回答

1

一本特定的结果来更新数据库的SQL查询SqlCommand需要分配Connection

command2.Connection = conn 

除此之外,你应该看看using-statement(其中关闭/释放连接隐含)。这应该用于执行IDisposable的每个类。

Using conn = New SqlConnection(SqlDataSource1.ConnectionString) 
    Using command1 = new SqlCommand(sql, conn) 
     ' insert your code here .... ' 
    End Using 
End Using