更新查询在带有 MS Access 的 VB.NET 中不起作用
Posted
技术标签:
【中文标题】更新查询在带有 MS Access 的 VB.NET 中不起作用【英文标题】:Update Query Is Not Working In VB.NET With MS Access 【发布时间】:2013-07-18 11:31:25 【问题描述】:导入 System.Data.OleDb
公开课表1
这是我的连接字符串
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|datadirectory|STORE.accdb")
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
con.Open()
Dim cmd As New OleDbCommand("SELECT [QTY OTHER], [HQTY PL3], [HQTY PL5], [TOTAL QTY] FROM(MATERIAL)WHERE ([MAT CODE] = @a)", con)
cmd.Parameters.AddWithValue("@a", TextBox1.Text)
Dim dr As OleDbDataReader = cmd.ExecuteReader
Dim qtyotherm, hqtypl3m, hqtypl5m, totalqtym As New Double
Dim qtyotherr, rqtypl3r, rqtypl5r, qtyr As New Double
Dim totalqtyfinal As New Double
Dim cmdins As New OleDbCommand("INSERT INTO RECEPT ([MAT CODE], QTY, RATE, TAXES, [RQTY PL3], [RQTY PL5], [RQTY OTHER]) VALUES (@b, @c, @d, @e, @f, @g, @h)", con)
cmdins.Parameters.AddWithValue("@b", TextBox1.Text)
cmdins.Parameters.AddWithValue("@c", TextBox2.Text)
cmdins.Parameters.AddWithValue("@d", TextBox10.Text)
cmdins.Parameters.AddWithValue("@e", TextBox9.Text)
cmdins.Parameters.AddWithValue("@f", TextBox3.Text)
cmdins.Parameters.AddWithValue("@g", TextBox4.Text)
cmdins.Parameters.AddWithValue("@h", TextBox5.Text)
Dim checkinsert As New Integer
checkinsert = cmdins.ExecuteNonQuery
这个执行的非查询工作正常
If checkinsert > 0 Then
If dr.HasRows Then
While dr.Read
qtyotherm = dr(0)
hqtypl3m = dr(1)
hqtypl5m = dr(2)
totalqtym = dr(3)
End While
文本框显示加法值
totalqtyfinal = totalqtym + TextBox2.Text
TextBox15.Text = totalqtyfinal
MessageBox.Show("chk text box value")
问题从这里开始
Dim cmdupdate As New OleDbCommand("UPDATE MATERIAL SET [TOTAL QTY] = @j WHERE ([MAT CODE] = @i)", con)
cmdupdate.Parameters.AddWithValue("@i", TextBox1.Text)
cmdupdate.Parameters.AddWithValue("@j", TextBox15.Text)
Dim chkupdate As New Integer
chkupdate = cmdupdate.ExecuteNonQuery
If chkupdate > 0 Then
MessageBox.Show("update done :) ")
总是显示此其他声明消息
Else
MessageBox.Show("fail to update :(")
End If
MessageBox.Show("quer 1 and 2 is successfully executed")
Else
MessageBox.Show("dr not working.")
End If
Else
MessageBox.Show("insert query fail")
End If
con.Close()
End Sub
结束类
【问题讨论】:
【参考方案1】:见this answer。 OleDbCommand 不支持命名参数。您需要按照您在 SQL 语句中的相同顺序添加参数。
在您的更新语句中,@j 后跟@i,并且您添加@i 后跟@j。 OleDbCommand 有效地将其视为 ?其次是 ?在 SQL 语句中,当你添加参数时,它只是添加参数 1 后跟参数 2。
【讨论】:
以上是关于更新查询在带有 MS Access 的 VB.NET 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章