使用:.NET 4,ODP.NET 11.2.0.3.0,Oracle数据库10g版本10.2.0.3.0
我疯狂地试图确定为什么我的删除语句不起作用。也许这里有人可以帮助我。
以下是 DOES 的代码:
cmd = New OracleCommand("delete from u_parameters where pkey = :pkey and user_id = :user_id and computer is null", Con)
cmd.Parameters.Add("pkey", OracleDbType.NVarchar2).Value = "Test"
cmd.Parameters.Add("user_id", OracleDbType.Decimal).Value = 1
cmd.ExecuteNonQuery() ' -- this returns 1 as it should
以下是不的代码:
cmd = New OracleCommand("delete from u_parameters where pkey = :pkey and user_id = :user_id and computer = :computer", Con)
cmd.Parameters.Add("pkey", OracleDbType.NVarchar2).Value = "Test"
cmd.Parameters.Add("user_id", OracleDbType.Decimal).Value = 1
cmd.Parameters.Add("computer", OracleDbType.NVarchar2).Value = DBNull.Value
cmd.ExecuteNonQuery() ' -- this returns 0!!
By不起作用我的意思是语句执行但数据库中没有任何反应(并且ExecuteNonQuery的结果为0,这意味着没有受影响的行)。我真的不明白这里可能出现什么问题。我已经尝试将'computer'参数IsNullable设置为True但它不会改变任何东西。
请帮忙。
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以对任何可以为空的参数执行以下操作。
oleDBCmd.Parameters.Add(new OracleParameter("computer", OracleType.NVarChar));`
if(string.IsNullOrEmpty(toStr)) {
oleDBCmd.Parameters["computer"].Value = DBNull.Value;
} else {
oleDBCmd.Parameters["computer"].Value = toStr;
}
`