2017-04-16 254 views
0

我收到以下錯誤的ExecuteNonQuery:Connection屬性尚未初始化

的ExecuteNonQuery:Connection屬性尚未初始化。

當下面的代碼運行

Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click 

    Using con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Comp-296\Project1\Project1\Game_time.mdb") 

     Using cmd = New OleDbCommand("UPDATE User-scores SET User_Name = @User_Name Game_Name = @Game_Name Score = @Score, [Time/Date] = @dt") 

      con.Open() 
      cmd.Parameters.Add("@User_Name", OleDbType.VarWChar).Value = txtUser.Text 
      cmd.Parameters.Add("@Game_Name", OleDbType.VarWChar).Value = txtGame.Text 
      cmd.Parameters.Add("@Score", OleDbType.VarWChar).Value = txtScore.Text 
      cmd.Parameters.Add("@dt", OleDbType.Date).Value = Convert.ToDateTime(txtDate.Text) 

      cmd.ExecuteNonQuery() 

      MessageBox.Show("Data Update successfully") 
     End Using 
    End Using 

End Sub 

難道我忘了把東西在參數?

回答

0

你忘了添加連接到命令,更新CMD,加CON像下面

Using cmd = New OleDbCommand("UPDATE User-scores SET User_Name = @User_Name Game_Name = @Game_Name Score = @Score, [Time/Date] = @dt",con) 

更新:缺少逗號UPDATE

@User_Name, Game_Name = @Game_NamE, Score = @Score 
+0

感謝ü的IT工作現在即時得到語法錯誤在更新@FrankLongo請 –

+0

仍然給我的錯誤 – Tushar

+0

我這樣做和UPDATE語句 –

1

您必須通過連接作爲參數到OledbCommand

只需使用下面的代碼

Using con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Comp-296\Project1\Project1\Game_time.mdb") 

    Using cmd = New OleDbCommand("UPDATE [User-scores] SET [User_Name] = ?, [Game_Name] = ?, Score = ?, [Time/Date] = ? WHERE id = 1", con) 
     con.Open() 
     cmd.Parameters.Add("@p1", OleDbType.VarWChar).Value = txtUser.Text 
     cmd.Parameters.Add("@p2", OleDbType.VarWChar).Value = txtGame.Text 
     cmd.Parameters.Add("@p3", OleDbType.VarWChar).Value = txtScore.Text 
     cmd.Parameters.Add("@p4", OleDbType.Date).Value = Convert.ToDateTime(txtDate.Text) 

     cmd.ExecuteNonQuery() 

     MessageBox.Show("Data Update successfully") 
    End Using 
End Using 

它看起來像你必須使用?馬克到參數傳遞給一個OledbCommand(你的方法是SQLCommand

瞭解更多關於Oledb Parameters

+0

謝謝你現在,我在UPDATE語句中得到語法錯誤。 –

+0

@FrankLobgo您錯過了在列之間添加逗號。檢查我的回答 – Hadi

0

您還沒有相關使用命令連接。該代碼不知道哪個連接(理論上可能有幾個)來運行該命令。

您可以將命令與以兩種不同方式的特定連接相關聯 - 使用構造函數或屬性:聲明cmd

cmd.Connection = con 

(上線:

Using cmd = New OleDbCommand("UPDATE User-scores SET User_Name = @User_Name Game_Name = @Game_Name Score = @Score, [Time/Date] = @dt",con) 

或者)

+0

謝謝你現在的工作即時獲取UPDATE語句中的語法錯誤 –

+0

你錯過了字段之間的兩個逗號:'User_Name = @User_Name Game_Name = @Game_Name Score = @ Score'應該是'User_Name = @User_Name,Game_Name = @Game_Name,Score = @ Score' – ADyson

0

您可以讓連接創建命令與CreateCommand。這樣連接就已經與創建的命令關聯了。這雖然意味着,你將不得不設置在CommandText財產的命令文本

Using con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Comp-296\Project1\Project1\Game_time.mdb") 

    Using cmd = con.CreateCommand() 
     con.Open() 
     cmd.CommandText = "UPDATE User-scores SET User_Name = @User_Name, Game_Name = @Game_Name, Score = @Score, [Time/Date] = @dt" 
     cmd.Parameters.Add("@User_Name", OleDbType.VarWChar).Value = txtUser.Text 
     cmd.Parameters.Add("@Game_Name", OleDbType.VarWChar).Value = txtGame.Text 
     cmd.Parameters.Add("@Score", OleDbType.VarWChar).Value = txtScore.Text 
     cmd.Parameters.Add("@dt", OleDbType.Date).Value = Convert.ToDateTime(txtDate.Text) 

     cmd.ExecuteNonQuery() 


     MessageBox.Show("Data Update successfully") 
    End Using 
End Using 
相關問題