更新查询在Vb.NET中不起作用
我正在尝试使用update更新数据库,但由于某些原因,数据库未得到更新 我使用了以下查询:更新查询在Vb.NET中不起作用,vb.net,ms-access,Vb.net,Ms Access,我正在尝试使用update更新数据库,但由于某些原因,数据库未得到更新 我使用了以下查询: Dim dc As OleDbCommand dc = New OleDbCommand("UPDATE tempM1 SET [input] = '" & ans_selected & "' WHERE question = '" & question & "'", cn) dc.ExecuteNonQuery() 我正在使用1个更新查询,其工作正常: dc = New
Dim dc As OleDbCommand
dc = New OleDbCommand("UPDATE tempM1 SET [input] = '" & ans_selected & "' WHERE question = '" & question & "'", cn)
dc.ExecuteNonQuery()
我正在使用1个更新查询,其工作正常:
dc = New OleDbCommand("UPDATE tempTof SET [input] = '" & optionSelected & "' WHERE question = '" & question & "'", cn)
dc.ExecuteNonQuery()
请帮忙。。。我花了将近2个小时来找出问题所在,但无法调试。您应该始终使用参数化查询,而且我在代码中看不到您在哪里打开连接
Dim cn As OleDbConnection
Using(cn = GetConnection())
cn.Open();
Dim dc As OleDbCommand
dc = New OleDbCommand("UPDATE tempM1 SET [input] = ? WHERE question = ?", cn)
dc.Parameters.AddWithValue("@ans", ans_selected)
dc.Parameters.AddWithValue("@question", question)
dc.ExecuteNonQuery()
End Using
在此处输入一些内容以检查dc.CommandText,例如:
dc.CommandText是否真的包含您希望它包含的内容
如果是的话,上面写着
UPDATE tempM1 SET [input]='foo' WHERE question='bar'
然后,通过直接访问数据库并检查用更新替换SELECT是否至少返回一行来进行双重检查:
SELECT * FROM tempM1 WHERE question='bar'
如果所有这些步骤都令人满意,但您仍然被卡住:
检查
question
的值,确保它与表中的实际行相对应。我尝试用数据库中的实际值替换question的值,但仍然存在一些问题。执行查询,但未在表中插入所选ans_的值,而是将row的值更新为NONE。这是两个不同的表。第一个是tempM1,第二个是emptof。您是否确定有一个值被指定给ANSU selected?实际上,我已经在begining中打开了连接,但忘了在代码中显示它。。。我尝试了你建议的方法,Steve,但是数据库中[input]列的值并没有被ans_selected更新,而是[input]列的值为None。你的列[input]和问题是文本类型吗?我想是的,因为你们用单引号括起来了。问题解决了。。。实际上,我在函数中声明了ans_select,它采用默认值,我将其声明为全局变量,问题得到了解决!!反正是thanx。
dc.ExecuteNonQuery()
UPDATE tempM1 SET [input]='foo' WHERE question='bar'
SELECT * FROM tempM1 WHERE question='bar'