0

我在这里遇到了这段代码的问题。我正在使用它将信息从预先填充的列表视图上传到远程服务器上的 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
4

1 回答 1

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 命令中的一个错误(您甚至使用了名字作为姓氏)。我不知道为什么在插入这些记录时使用 aDataAdapter来填充每次迭代。DataSets我省略了那部分,因为它毫无意义。

于 2012-11-22T15:25:17.510 回答