2012-11-22 204 views
0

我在此處遇到此代碼的一些問題。我正在使用它將信息從預填充列表視圖上載到遠程服務器上的SQL表。看來,錯誤:錯誤:填充:SelectCommand.Connection屬性尚未初始化

填充: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

聽起來好像您在調用legitsql之前沒有打開或配置過與數據庫的連接() –

回答

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參數,以避免SQL注入,以防止不小心的錯誤,使代碼在一般的可讀性。

請注意,我已經更正了您的sql-command中的錯誤(即使對於姓氏,您也使用了名字)。我不知道爲什麼在插入這些記錄時,您在每次迭代時都使用DataAdapter填充DataSets。我已經省略了那部分,因爲它毫無意義。

+0

我明白你是如何做到這一點的,它比我做得更乾淨。感謝您的幫助,但我得到一個相關的,但稍有不同的錯誤。 當cmd.ExecuteNonQuery(),**連接必須有效並且打開** 會導致崩潰。 感謝幫助, – Ksingh

+0

@Ksingh:編輯我的答案,在循環前添加'sqlcon.Open();'。您需要在使用「Command」時手動打開連接(如果連接已關閉,則「DataAdapter」會隱式執行)。 –

+0

命令執行期間遇到致命錯誤。 經過同一行後,我在我評論之後就想出了Sqlcon.open。 謝謝! – Ksingh

相關問題