错误:填充:SelectCommand.Connection属性尚未初始化

时间:2012-11-22 15:13:11

标签: .net sql vb.net

我在这里使用此代码时遇到了一些问题。我正在使用它将信息从预先填充的列表视图上传到远程服务器上的SQL表。似乎错误:

填充:尚未初始化SelectCommand.connection属性

每次我尝试调试时都会出现

。任何以前使用相同方法上传信息的程序也会发生这种情况(当时它们工作正常)

我正在使用vb 2012 + win7 / win8

  Sub legitsql()
        For i As Integer = 0 To UploadMasterStudentFile.numlines - 1
            ds = New DataSet
            da = New MySqlDataAdapter("insert into SK_StudentList (studentnumber,firstname,lastname,birthdate,year) values('" & Student_Record.StudentNumber(i) & "','" & Student_Record.FirstName(i) & "','" & Student_Record.FirstName(i) & "','" & Student_Record.Birthdate(i) & "','" & Student_Record.Year(i) & "')", sqlcon)
            da.Fill(ds, "SK_StudentList")
        Next
        MessageBox.Show("Student List Updated")


    End Sub

1 个答案:

答案 0 :(得分:1)

这可能与您的问题有关,但是,您应该在完成连接后处理它们。您应该使用Using - 声明:

Using sqlcon = New MySqlConnection(connectionString)
    Const sql = "insert into SK_StudentList (studentnumber,firstname,lastname,birthdate,year) values(?studentnumber,?firstname,?lastname,?birthdate,?year);"
    sqlcon.Open();
    For i As Integer = 0 To UploadMasterStudentFile.Count - 1
        Using cmd = New MySqlCommand(sql, sqlcon)
            cmd.Parameters.AddWithValue("?studentnumber", Student_Record.StudentNumber(i))
            cmd.Parameters.AddWithValue("?firstname", Student_Record.FirstName(i))
            cmd.Parameters.AddWithValue("?lastname", Student_Record.LastName(i))
            cmd.Parameters.AddWithValue("?birthdate", Student_Record.Birthdate(i))
            cmd.Parameters.AddWithValue("?year", Student_Record.Year(i))
            cmd.ExecuteNonQuery()
        End Using
    Next
End Using

你还应该使用sql-parameters来避免sql-injection,以防止粗心的错误,并使代码更具可读性。

请注意,我已经更正了sql-command中的错误(即使是lastname也使用了firstname)。在插入这些记录时,我不知道为什么在每次迭代时使用DataAdapter填充DataSets。我省略了那部分,因为它毫无意义。