2017-04-16 276 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 
相关问题