标签: dbnull

我应该用什么来比较DBNull?使用DBNull.Value或ToString().IsNullOrEmpty()

我可以DBnull使用任何方法检查数据行.

通过使用

if(dr[0][0]==DBNull.Value)
//do somethin
Run Code Online (Sandbox Code Playgroud)

或通过做

if(dr[0][0].ToString().IsNullOrEmpty())
//do something
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我都会得到相同的结果.

但是哪一个是直接正确的方法.哪个将使用更少的资源

.net null dbnull dataset

21
推荐指数
2
解决办法
1万
查看次数

接线员'??' 不能应用于'string'和'System.DBNull'类型的操作数

我有以下C#代码:

sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? DBNull.Value);
Run Code Online (Sandbox Code Playgroud)

但它抛出以下编译错误:

运算符??不能应用于类型string和的操作数System.DBNull

为什么编译器不允许这种语法?

.net c# dbnull operators

20
推荐指数
4
解决办法
1万
查看次数

从类型"DBNull"到"String"类型的转换无效

我收到了这个问题

从类型"DBNull"到"String"类型的转换无效.

第501行:hfSupEmail.Value = dt.Rows(0)("SupEmail")

我对此非常陌生,我不确定有人会指导我的确切问题是什么?

非常感谢

vb.net asp.net string dbnull

20
推荐指数
2
解决办法
6万
查看次数

如何通过列的名称检查MySqlDataReader中的NULL?

如何NULL在空旷地区检查价值MySqlDataReader

以下不起作用; 它始终击中else:

if (rdr.GetString("timeOut") == null)
{
    queryResult.Egresstime = "Logged in";
}
else
{
    queryResult.Egresstime = rdr.GetString("timeOut");
}
Run Code Online (Sandbox Code Playgroud)

rdr.IsDbNull(int i) 只接受列号,而不是名称.

c# mysql null dbnull mysqldatareader

18
推荐指数
2
解决办法
2万
查看次数

应该使用IsDBNull和IsNull中的哪一个?

如果VB.NET我有DataRow,我想测试列值是否Null,我应该使用:

myDataRow.IsNull("Column1")
Run Code Online (Sandbox Code Playgroud)

要么

IsDBNull(myDataRow("Column1"))
Run Code Online (Sandbox Code Playgroud)

.net vb.net null dbnull

16
推荐指数
3
解决办法
2万
查看次数

在数据集中查找空值 - DataRow.IsNull方法vs == DbNull.Value - c#

使用c#方法DataRow.IsNull确定空值是否超过检查行是否等于DbNull.value有什么好处?

if(ds.Tables[0].Rows[0].IsNull("ROWNAME")) {do stuff}
Run Code Online (Sandbox Code Playgroud)

VS

if(ds.Tables[0].Rows[0]["ROWNAME"] == DbNull.value) {do stuff}
Run Code Online (Sandbox Code Playgroud)

dbnull datarow isnull dataset c#-4.0

15
推荐指数
2
解决办法
3万
查看次数

不允许从数据类型nvarchar到varbinary(max)的隐式转换

当我尝试将DBNull.Value插入可空的 varbinary(max)字段时,我得到此异常:

Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.
Run Code Online (Sandbox Code Playgroud)

那是我的代码:

  insertCMD.Parameters.AddWithValue("@ErrorScreenshot", SqlDbType.VarBinary).Value = DBNull.Value;
Run Code Online (Sandbox Code Playgroud)

我知道在SO上存在重复的问题,但我不像其他人那样使用任何字符串.

我错了什么?

更新:

using (var insertCMD = new SqlCommand("INSERT INTO TestplanTeststep (TeststepId,TestplanId,CreatedAt,ErrorText,ErrorScreenshot,TestState) VALUES (@TeststepId, @TestplanId,@CreatedAt,@ErrorText,@ErrorScreenshot,@TestState)", con))
{
 var p1 = insertCMD.Parameters.Add("@TeststepId", SqlDbType.Int);
 var p2 = insertCMD.Parameters.Add("@CreatedAt", SqlDbType.DateTime);
 insertCMD.Parameters.AddWithValue("@TestplanId", testplan.Id);
 insertCMD.Parameters.AddWithValue("@ErrorText", (object) DBNull.Value);
 insertCMD.Parameters.AddWithValue("@ErrorScreenshot", (object) DBNull.Value);
 insertCMD.Parameters.AddWithValue("@TestState", (int)Teststep.TeststepTestState.Untested);

       foreach (Teststep step in teststeps)
        {
           p1.Value = step.Id;
           p2.Value = step.CreatedAt;
           insertCMD.ExecuteNonQuery();
        }
     }
Run Code Online (Sandbox Code Playgroud)

sql dbnull insert varbinarymax

14
推荐指数
2
解决办法
5万
查看次数

C#数据库访问:DBNull vs null

我们在这里使用自己的ORM,并为所有db表提供强类型包装器.我们还允许执行弱类型的临时SQL,但是这些查询仍然通过相同的类来从数据读取器中获取值.

在调整该类以使用Oracle时,我们遇到了一个有趣的问题.使用DBNull.Value或null是否更好?使用DBNull.Value有什么好处吗?使用null似乎更"正确",因为我们已经将自己从数据库世界中分离出来了,但是有一些含义(ToString()例如,当一个值为null时,你不能盲目地这样做)所以它肯定是我们需要有意识的东西决定.

c# orm null dbnull

13
推荐指数
2
解决办法
2万
查看次数

从IDataReader获取值的空安全方法

(LocalVariable)ABC.string(Name)=(Idatareader)datareader.GetString(0);

这个名称值来自数据库..这里发生的是这个名称值是否为null而读取它时抛出异常?

我在这里手动做一些条件.我不想写一个手动条件来检查我的所有变量..

我现在正在做这样的事情..

string abc =  (Idatareader)datareader.GetValue(0);
if(abc = null)
    //assiging null
else
    assiging abc value
Run Code Online (Sandbox Code Playgroud)

是否可以为此编写扩展方法?谢谢

c# extension-methods dbnull idatareader

12
推荐指数
1
解决办法
1万
查看次数

SqlDataReader检查空值的最佳方法-sqlDataReader.IsDBNull vs DBNull.Value

我想从数据库中检索十进制值,我想知道检查空值的推荐方法.

我在MSDN上看到过- DBNull.Value字段很少使用此检查.

因此,reader.IsDBNull检查空值是最好/最有效的方法吗?

我创建了2个示例方法:

public static decimal? GetNullableDecimal(SqlDataReader reader, string fieldName)
{
    if (reader[fieldName] == DBNull.Value)
    {
        return null;
    }
    return (decimal)reader[fieldName];
}

public static decimal? GetNullableDecimal_2(SqlDataReader reader, string fieldName)
{
    if (reader.IsDBNull(reader[fieldName]))
    {
         return null;
    }
    return (decimal)reader[fieldName];
}
Run Code Online (Sandbox Code Playgroud)

大多数情况下,字段将为空.

提前致谢!

c# ado.net dbnull sqldatareader

12
推荐指数
3
解决办法
3万
查看次数