如何将null插入数据库?

时间:2010-10-12 09:32:56

标签: c# asp.net c#-2.0

您好我正在尝试在数据库列中插入null,具体取决于gridview datakeys值(如果是“”将null插入数据库) 但是,我在数据库列中获得了一个空格。

string sbcId = gvTest.DataKeys[gr.RowIndex]["myColumn"].ToString();
 insgnp.Parameters.Add(new OleDbParameter("EMPID", (sbcId==""?DBNull.Value.ToString():sbcId)));

8 个答案:

答案 0 :(得分:19)

您必须重写代码:

if(string.IsNullOrEmpty(sbcId))
    Parameters.Add(new OleDbParameter("EMPID", DBNull.Value)); 
else
    Parameters.Add(new OleDbParameter("EMPID", sbcId)); 

你所拥有的三元if语句的问题是它的返回类型必须始终相同,这就是你不能使用它的原因(string和DbNull.Value不兼容)

答案 1 :(得分:8)

使用DBNull.Value,而不是DBNull.Value.ToString。 (使用null的.NET中的其他参数集类型也可以使用,但我不是100%确定OleDbParameter)。

至于第三级运营商。不要强制转换为字符串,而是将字符串强制转换为object:

sbcId=="" ? DBNull.Value : (object)sbcId

答案 2 :(得分:3)

您需要使用DBNull.Value而不是DBNull.Value.ToString()

DBNull.Value.ToString()是''

该程序提供

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("'{0}'", DBNull.Value.ToString());
        }
    }
}

alt text

答案 3 :(得分:1)

通过在DBNull.Value

之后删除ToString()来尝试以下操作
string sbcId = gvTest.DataKeys[gr.RowIndex]["myColumn"].ToString();
 insgnp.Parameters.Add(new OleDbParameter("EMPID", (sbcId==""?DBNull.Value:sbcId)));

答案 4 :(得分:1)

SQLString.Null应该做得很好:)

答案 5 :(得分:0)

如果在访问数据库中插入非字符串值,则可以用这种方式编写插入查询

插入tableName(column1,column2)值(NULL,NULL);

但是你想在访问中的短文本或长文本字段中插入空值,你可以用这种方式编写插入查询

插入tableName(column1,column2)值('','');

答案 6 :(得分:0)

我更喜欢使用扩展方法来处理而不是多个if语句。这允许您考虑null或空字符串值。也允许它可重复使用。

    public static object GetDBNullOrValue<T>(this T val)
    {
        bool isDbNull = true;
        Type t = typeof(T);

        if (Nullable.GetUnderlyingType(t) != null)
            isDbNull = EqualityComparer<T>.Default.Equals(default(T), val);

        else if (t.IsValueType)
            isDbNull = false;

        else if (t == typeof(string) && val != null)
        {
            string temp = val as String;
            isDbNull = (temp == String.Empty);
        }

        else
            isDbNull = (val == null);

        return isDbNull ? DBNull.Value : (object)val;
    }

然后你可以使用

     Parameters.Add(new OleDbParameter("EMPID", sbcId.GetDBNullOrValue())); 

答案 7 :(得分:-3)

your string like that

kwds[i] = {j.split('_', maxsplit=1)[0]: kwargs[j] for j in kwargs if j.startswith(i)}

now add following line

string value = "";

now insert in db and check you have null value their be logical