SQL更新给错误的结果
问题描述:
我在VB.NETSQL更新给错误的结果
下面的SQL语句Dim READER As SqlDataReader
Try
konneksie.Open()
Dim Query As String
Query = "Update blokkeklaar " & _
" set Klaarvb = 'JA' " & _
" where KlaarEZY = 'YES'" & _
" Update blokkeklaar " & _
" set Klaarvb = 'NEE' " & _
" where KlaarVB IS NULL"
COMMAND = New SqlCommand(Query, konneksie)
READER = COMMAND.ExecuteReader
MessageBox.Show("KlaarVB verander ")
konneksie.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
End Try
konneksie.Close()
我不明白为什么klaarvb填充了“东东”,其中klaarvb不为空?
答
你正在试图做的2个独立的更新有一个声明。如果你想有一个单独的语句的解决方案,尝试:
update blokkeklaar
set Klaarvb = case
when KlaarEZY = 'YES' then 'JA'
when KlaarVB is null then 'NEE'
else Klaarvb -- Thanks hurcane
end;
这会按顺序评估,并退出当条件满足,因此,如果第一个条件为真,第二个将不评估或应用。
+0
没有其他条件的情况下,我相信如果在语句执行之前它不为null,Klaarvb将被设置为null。为了保存数据,你应该有一个“其他Klaarvb”。 – hurcane
答
你必须把语句之间分号或单独执行它们:
Query = "Update blokkeklaar " & _
" set Klaarvb = 'JA' " & _
" where KlaarEZY = 'YES';" & _ //<--put semiColon here
" Update blokkeklaar " & _
" set Klaarvb = 'NEE' " & _
" where KlaarVB IS NULL"
另外,作为一个侧面说明,你最好使用ExecuteNonQuery
代替ExecuteReader
如果您在更新语句之前和之后发布样本数据会更有帮助。 – hurcane