连接属性尚未正确初始化

时间:2012-03-16 22:02:56

标签: asp.net sql vb.net

我在command2.ExecuteNonQuery()上遇到“连接属性未正确初始化”错误消息。

我有一个SQL查询,它在网格视图中显示其结果(仅一个结果)我试图通过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 个答案:

答案 0 :(得分:1)

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