在Oracle中将列值增加1 - (ORA-01013)

时间:2015-04-03 10:05:09

标签: vb.net oracle odp.net

我有以下更新语句在SQL Developer中正常工作:

UPDATE SDUSERS SET PWDATTEMPTS=PWDATTEMPTS+1 WHERE lower(UserName)='test';

现在,在我的VB.NET中,由于某种原因它不会更新数据库,它会产生错误ORA-01013:用户请求取消当前操作,错误代码:-2147467259

Dim sqlUpdateFailed As New OracleCommand("UPDATE " & oConnection.SCHEMA_NAME.ToUpper 
 & "SDUSERS SET PWDATTEMPTS=PWDATTEMPTS+1 WHERE lower(USERNAME)='" & sUsername & "'", conn)
                sqlUpdateFailed.CommandTimeout = 20
                sqlUpdateFailed.ExecuteNonQuery()

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

最有可能的原因是,ORA-1013的原因是达到了查询执行超时。检查一下,尝试一些很大的超时值。

这样的更新应该快速,非常快地执行(我猜桌子很小,不是吗?)所以如果它挂起就意味着记录被锁定了。也许您将此记录更新为SQL Developer并忘记提交,可能还有其他内容。如果在更新语句之前执行SELECT * FROM SDUSERS WHERE lower(UserName) = :username FOR UPDATE NOWAIT之类的操作,则可以检查它。

顺便说一句,您的来源为SQL Injection提供了出色的能力。