- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们在 Oracle 数据库中有一个表,其中包含一个类型为 Char(3 Byte) 的列。
现在我们使用参数化的 sql 来选择一些带有 DBNull.Value 的行,但它不起作用:
OracleCommand command = null;
OracleDataReader dataReader = null;
string sql = "select * from TEST_TABLE where COLUMN_1 = :COLUMN_1";
try
{
OracleConnection connection = (OracleConnection) dbConnection;
command = new OracleCommand( sql, connection );
OracleParameter param_1 = new OracleParameter( "COLUMN_1", OracleDbType.Char );
command.Parameters.Add( param_1 );
param_1.Value = DbNull.Value;
dataReader = command.ExecuteReader( );
int recordCount = 0;
while( dataReader.Read( ) == true )
{
recordCount++;
}
Console.WriteLine( "Count = " + recordCount ); // is 0
}
[...]
我错过了什么吗?我们肯定有一些包含 DBNull 的行,
但是你会用“is null”而不是“= null”编写一个“普通”sql的情况
也很明显。
有人可以解释这种行为吗?如何编写需要条件来检查 DBNull 的参数化 sql?
谢谢
最佳答案
Null 是没有被设置为任何东西,所以你不会得到 '= null' 的正确行为。因为 null 是没有值,所以说“这个没有任何值的变量与另一个没有任何值的变量具有相同的值”是没有意义的。如果你没有值(value),你就不能拥有与其他东西相同的值(value)。
解决这个问题的一种方法是创建两个 sql 语句,一个接受参数,另一个接受 'is null'。然后使用“if”语句来选择要使用的一个。
语句 1:
string sql = "select * from TEST_TABLE where COLUMN_1 = :COLUMN_1
声明 2:
string sql = "select * from TEST_TABLE where COLUMN_1 is null
除非您总是与 null 进行比较。然后,只需使用语句 2
关于c# - OracleParameter 和 DBNull.Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701382/
我的应用程序输出“System.InvalidCastException:“对象无法从 DBNull 转换为其他类型。” Dim sqlquery = String.Format("SELECT id
是否有人对如何检查值是否为 DBNull 有偏好? ?我发现这两个语句给了我想要的结果,但只是想知道是否有偏好? if (any is System.DBNull) 与...一样: if (any =
我很好奇使用 if(some_value is DBNull) 与 if(DBNull.Value.Equals(some_value)) 的优缺点是什么。我个人更喜欢 if(some_value i
我可以检查 DBnull使用任何方法在数据行上。 要么通过使用 if(dr[0][0]==DBNull.Value) //do somethin 或者通过做 if(dr[0][0].ToString(
如标题所示,我有一个代码,当数据库中没有几何图形并且 DbGeometry 获得空值时,我会收到带有空值的 DbNull 类型。但是当我想做一个 if 语句来检查 DbGeometry 是否等于 Db
我对 .NET 中的空值和变量有点困惑。 (首选VB) 有没有办法检查任何给定变量的“空值”,无论它是对象还是值类型?或者我的空检查是否必须始终预测它是检查值类型(例如 System.Integer)
编辑:从PowerShell 7 Preview 2开始,由于Joel Sallow通过pull request 9794,-not [System.DBNull]::Value的计算结果为$true
在 .NET 中有 null引用,到处都用来表示一个对象引用为空,然后还有DBNull ,它被数据库驱动程序(和其他几个)用来表示......几乎相同的东西。自然,这会造成很多困惑,并且必须制定转换例
SQLServer 整型字段。值有时为空。DataAdapter填充数据集OK,可以在DatagridView中显示数据。 当尝试以编程方式从数据集中检索数据时,数据集字段检索代码会抛出 Strong
现在我正在使用以下方法: string[] AudienceTags = ((string[])(relResults["NEVCOAudienceTag"].GetType() == typeof(
我有一个类型为的对象: dynamic {System.DBNull} 我要检查一下: if (myObject!= null || myObject!= DBNull.Value) { Mes
当使用 expando 对象填充我的数据表时,我在初始化新的 datarow 时遇到以下错误消息。异常(exception)情况是: Invalid Storage Type: DBNull publ
我得到 从类型 'DBNull' 到类型 'Integer' 的转换无效。”错误行“Dim avgObject As string = Cstr(avgCom.ExecuteScalar()) 当删除
当我从数据库中检索任何标量值时,我通常会为可为空的字段编写这样的代码。 cmd.ExecuteScalar() == DBNull.Value ? 0 : (int)cmd.ExecuteScalar
我需要从一个DataRow 中解析一个值并将其分配给另一个DataRow。如果输入有效,则我需要将其解析为 double,或者将 DBNull 值添加到输出。我正在使用以下代码: public dou
我正在尝试执行一个存储过程,然后使用 if 语句检查空值,但我做空了。我是 VB 专家,所以如果我犯了小学生语法错误,请多多包涵。 objConn = new SqlConnection(strCon
如果 DataRow 中的列可能是 DBNull , 是以下将 DBNull 替换为空字符串的最短方法? Dim result As String = if(isDBNull(dataRow1("co
我正在查看我正在处理的 .net 程序的一些代码。该程序的前任作者在一年前将代码给了我。突然,我看到一个我没有接触过的代码抛出的异常: if ((string)row["LevelName"] !=
当用户名与登录我的程序的用户相同时,我编写了从 Access 数据库中检索电子邮件地址的代码。我希望在名为 Email 的文本框中显示电子邮件地址值 Dim x If ConnectionDb.Sta
这个问题偶尔会出现,但我还没有看到令人满意的答案。 典型的模式是(行是DataRow): if (row["value"] != DBNull.Value) { someObject.
我是一名优秀的程序员,十分优秀!