此INSERT查詢在VS20012,SQL Server 2008 R2中完美無缺。但是當我嘗試從VB代碼後面執行它時,我在執行後嘗試將值賦給變量的行上出現DBnull轉換錯誤。將參數ID分配給帶參數的變量OUTPUT
插入也不成功,但也不會導致Try Catch出錯。即使連接關閉後也是如此。非常奇怪的行爲。
sqSql = "INSERT INTO tblLogging (vein, num, descripBaseFileName, " & _
" csvBaseFileName, baseActive, diagActive) " & _
" OUTPUT INSERTED.keyID" & _
" VALUES (@vein, @num, @cnfFil, @csvFil, 'True', 'False')"
command3.Parameters.AddWithValue("@vein", vein1)
command3.Parameters.AddWithValue("@num", veinNum)
command3.Parameters.AddWithValue("@cnfFil", cnfFil)
command3.Parameters.AddWithValue("@csvFil", csvFil)
command3.Parameters.Add("@keyID", SqlDbType.Int)
command3.Parameters("@keyID").Direction = ParameterDirection.Output
Try
command3.CommandText = sqSql
oCnn.Open()
command3.ExecuteScalar()
oCnn.Close()
錯誤出在這裏:
**Dim retkeyID As Integer = command3.Parameters("@keyID").Value**
Catch ex As Exception
Throw ex
End Try
什麼我做錯了,將不勝感激任何想法。
你應該看看[我們可以停止使用AddWithValue()了嗎?( http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)並停止使用'.AddWithValue()' - 它可能會導致意外和令人驚訝結果... – 2014-11-03 21:22:16