标签: dbnull

mysqli预处理语句,使用bind params插入NULL

有谁知道是否可以使用MYSQLI bind_param将NULL插入到列中.

我有一种情况,有时我想在bind_param中将列设置为null.像这样......

$column2 = "NULL";
$insert_data->bind_param('ss', $column1,$column2);
Run Code Online (Sandbox Code Playgroud)

显然,这只是将NULL作为字符串写入列.我尝试过null和\ 0但它们不起作用.

我想知道是否有一些值,我可以使$ column2相等,这将导致它提交和实际的空值而不是.

否则,我将不得不动态构建类型和参数列表,并使用call_user_func_array创建我的绑定,以便在它们为null时不写入列.我可以这样做,但它导致了许多繁琐的额外代码,所以我只是想知道这是否可以避免.谢谢

parameters mysqli dbnull insert

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

为什么我不能用'??' System.DBNull值的操作数?

我有一个Oracle数据表获取为null的列.所以我想保持代码很好,很简单,我会使用?? 操作数.AlternatePhoneNumber是我的C#模型中的字符串.

AlternatePhoneNumber = customer.AlternatePhoneNumber ?? ""
Run Code Online (Sandbox Code Playgroud)

但是,即使使用该代码,我仍然会收到错误.

System.InvalidCastException: Unable to cast object of type 'System.DBNull' to type 'System.String'.
Run Code Online (Sandbox Code Playgroud)

我知道错误意味着什么,但为什么?在DBNull上不可用?是不是null和DBNull基本相同?

谢谢.

c# oracle dbnull

3
推荐指数
1
解决办法
1114
查看次数

如何可靠地检查可空属性是否不包含数据?DBNull正在杀了我

我已经开始使用Rob Conery的Massive了.令人敬畏的小"ORM",非常高效.但是,我在可空字段上遇到System.DBNull比较问题.

例如,我想检查属性是否与另一个属性匹配(在此示例中为long类型)

if (obj.MemberId == otherObj.MemberId) return true;
Run Code Online (Sandbox Code Playgroud)

抛出异常:运算符'=='不能应用于'System.DBNull'和'long'类型的操作数.在这种情况下,obj.MemberId为null(更具体地说,DBNull).

好的,所以我先检查一下它的DBNull.Value是否正确?像这样:

if (obj.MemberId != DBNull.Value)
    return obj.MemberId == otherObj.MemberId;
Run Code Online (Sandbox Code Playgroud)

酷,这是有效的,至少在obj.MemberId是DBNull时,但是当它不是(包含一个long)时,另一个例外:运算符'!='不能应用于'long'和'System.DBNull'类型的操作数.

DBNull正在杀了我.如何可靠地检查可空属性是否不包含数据?

c# dbnull

3
推荐指数
1
解决办法
2156
查看次数

使用 C# 对 SQLDataReader 值进行 System.IndexOutOfRangeException

我有一个返回三个整数的 SQLDataReader。但是,有时两个整数将返回空值。

为了解决这个问题,我写了以下内容:

int shoppingCartHeadID = 0;
int billID = 0;
int delID = 0;

conn.Open();
reader = comm.ExecuteReader();
if (reader.Read())
{
       shoppingCartHeadID = Convert.ToInt32(reader["shoppingCartHeadID"]);

       if (!reader.IsDBNull(billID))
       {
            billID = Convert.ToInt32(reader["billID"]);
       }

       if (!reader.IsDBNull(delID))
       {
            delID = Convert.ToInt32(reader["delID"]);
       }                
}
reader.Close();
Run Code Online (Sandbox Code Playgroud)

不幸的是我仍然收到错误消息。有什么建议么?

PS我也尝试过这个但没有运气

if (reader["billID"] != null)

c# asp.net dbnull sqldatareader

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

在.net4中使用带有dbnull值的datareader

我听说框架4中有一个字段扩展方法允许一个接收来自datareader的空值,而不必经过第一次测试的过程,如果不是null然后......等等.这里有关于扩展方法的信息(MSDN)),但我不知道如何在代码中使用它(相对较新的.net和以前从未使用过的扩展方法).如果有人能举一个例子,我将不胜感激.

这是我试图实现的,但是当在任一列中返回dbnull时它会返回错误.

Reader.Read()
Dim Val As Nullable(Of Double) = Reader.GetDecimal(0)
Dim Vol As Nullable(Of Long) = Reader.GetInt32(1)
Run Code Online (Sandbox Code Playgroud)

.net dbnull field datareader vb.net-2010

3
推荐指数
1
解决办法
2471
查看次数

为什么这个程序没有输入我的ElseIf语句--System.DBNull

我将Excel文件导入ASP.NET DataTable.有些值是空白的,特别是在索引2和3处,我想将这些空白字段设置为0.

调试时,该值row.item(2)row.item(3)System.DBNull.有趣的是,程序进入If语句并将row.item(2)值设置为0,但它从不进入ElseIf语句.到底是怎么回事?这是我的代码:

If row.Item(2) Is Nothing OrElse row.Item(2).ToString = "" OrElse IsDBNull(row.Item(2)) Then
    dt.Rows.Item(i).SetField(2, 0)

ElseIf row.Item(3) Is Nothing OrElse row.Item(3).ToString = "" OrElse IsDBNull(row.Item(3)) Then
    dt.Rows.Item(i).SetField(3, 0)
End If
Run Code Online (Sandbox Code Playgroud)

编辑:

根据蒂姆的建议,我修改了我的代码如下:

If Not row.Field(Of Int32?)(2).HasValue Then
    dt.Rows.Item(i).SetField(2, 0)
End If

If Not row.Field(Of Int32?)(3).HasValue Then
    dt.Rows.Item(i).SetField(3, 0)
End If
Run Code Online (Sandbox Code Playgroud)

然而,这是一个错误 - Object cannot be cast from DBNull to other types

调试时,在第一个循环中:

row.Item(2) = 17 …

vb.net asp.net dbnull if-statement

3
推荐指数
1
解决办法
187
查看次数

在插入数据库时​​将空字符串设置为null

我一直无法为这个问题找到合适的解决方案,我知道这很简单,但我忘记了怎么做.我有一个带有一个textfield字段的表单,用户不需要填写.我想在数据库中插入NULL,而不是它当前正在执行的0.不过,我不确定我错过了什么.文本框已命名taxRateTxt,我目前无法为我工作:

try
{
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    {
        cn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;

        cmd.Parameters.Add(new SqlParameter("@FIPSCountyCode", countyCodeTxt.Text));
        cmd.Parameters.Add(new SqlParameter("@StateCode", stateCodeList.SelectedValue));
        cmd.Parameters.Add(new SqlParameter("@CountyName", countyNameTxt.Text));

        string taxStr = taxRateTxt.Text;
        //test for an empty string and set it to db null
        if (taxStr == String.Empty)
        {
            taxStr = DBNull.Value;

        }

        cmd.Parameters.Add(new SqlParameter("@TaxRate", taxStr));

        if (AddBtn.Visible == true)

            cmd.CommandText = addQuery;

        if (EditBtn.Visible == true)
        {
            cmd.CommandText = editQuery;
        }

        cmd.ExecuteNonQuery();
        cn.Close();
    }
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

.net c# string dbnull sql-insert

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

如何在对列值的条件赋值中使用 DbNull.Value?

我正在构造一个带有参数的 Command 对象来设置列值。我想使用一个简单的条件将某个nullable int列设置为整数值或DbNull.Value,具体取决于变量是否为空。

例子:

dbCmd.Parameters.Add("@MyIntColumn", SqlDbType.Int).Value =
    myColumnValue == null ? DBNull.Value : myColumnValue;
Run Code Online (Sandbox Code Playgroud)

当然,这会给编译器错误:“DbNull 和 int 之间没有隐式转换”。

那么在那里使用条件的正确方法是什么,其结果可以是 int 或 DbNull?

c# dbnull conditional-operator

3
推荐指数
1
解决办法
1706
查看次数

在VB.NET中将dbNull转换为字符串的简单方法

我正在寻找一种更简单的方法来检查一个值是否为dbNull并将其转换为空字符串(如果是这样).

我需要这种情况的一个例子是:

Dim dt As New DataTable
Dim conn As New OleDbConnection(someConnStr)
Dim adap As New OleDbDataAdapter(qryCSSInfo, cssConn)
adap.Fill(dt)


Dim someStr As String = "The first column of the first row returned: " & dt.rows(0).item(0)
Msgbox(someStr)
Run Code Online (Sandbox Code Playgroud)

问题是如果dt.rows(0).item(0)在数据库中为空,它将作为dbNull值返回,这显然不会附加到字符串.

我对这个问题的解决方案是使用if语句用空字符串替换值:

Dim dt As New DataTable
Dim conn As New OleDbConnection(someConnStr)
Dim adap As New OleDbDataAdapter(qryCSSInfo, cssConn)
adap.Fill(dt)


If Not isDBNull(dt.rows(0).item(0)) then
     Dim someStr As String = "The first column of the first row returned: " & dt.rows(0).item(0)
Else
     Dim someStr As String …
Run Code Online (Sandbox Code Playgroud)

vb.net dbnull

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

在.NET Standard 1.4中不能使用DBNull吗?

我正在创建一个将在WPF项目和.NET Core项目中使用的类库.

对于以下代码:

    public class MyClass
    {
        private void MyFunction(object o)
        {
            if (o == DBNull)
            {
                //ommitted
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

当前上下文中不存在名称"DBNull"

这是在Visual Studio 2017中创建的.NET标准类库项目.

我的.NET Core项目和WPF项目都允许使用DBNull.

.net c# dbnull .net-standard-1.4

3
推荐指数
1
解决办法
570
查看次数