代码遇到了很多麻烦。我正在尝试进行基本的upsert,并且可以使insert命令无问题地工作,但是Select和update并不能很好地协同工作。我已经尝试了各种方法来配置参数,如果我自己这么说的话,所有示例/从头开始构建它的方式都非常糟糕。
请注意我大约两周前拿起了VB.Net和编程。
所以我正在寻找的是配置参数的真实世界样本,和/或select和update语句可能出错的地方。我很确定问题不在于select语句本身更多的<>每次调试时,即使表中存在数据,它也会以0为单位返回。
目前使用VB Studio Express 2010,VB.Net和Access DB
Dim sel As String = "SELECT ID FROM Stock WHERE ID = '" & txtID.Text & "'"
Dim cmd As New OleDbCommand(sel, conn)
conn.Open()
Try
cmd.ExecuteNonQuery()
If dt.Rows.Count < 1 Then
If radAdd.Checked = True Then
Dim dbUP As String = ("Update Stock SET Qty = Qty +1 Where ID = '" & txtID.Text & "'")
Dim cmdup As New OleDbCommand(dbUP, conn)
cmdup.ExecuteNonQuery()
Else
Dim dbDW As String = ("Update Stock SET Qty = Qty -1 Where ID = '" & txtID.Text & "'")
Dim cmdw As New OleDbCommand(dbDW, conn)
cmdw.ExecuteNonQuery()
End If
Else
Dim dbIns As String = "INSERT INTO Stock (ID, Qty, LastDate)"" VALUES ('" & txtID.Text & "', 1, Now())"
Dim dc As New OleDbCommand(dbIns, conn)
dc.ExecuteNonQuery()
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
conn.Close()
答案 0 :(得分:0)
您需要做的是更改以下两行:
cmd.ExecuteNonQuery()
If dt.Rows.Count < 1 Then
于: Dim oValue As Object
oValue = cmd.ExecuteScalar()
If oValue IsNot Nothing AndAlso oValue IsNot DBNull.Value Then
这样做只是从select命令中检索单个值,如果它不为null,则存在某些内容,因此您将进入更新代码。如果记录不存在,代码将返回dbnull.value或什么都没有,您将继续执行插入代码。