您好我正在尝试在数据库列中插入null,具体取决于gridview datakeys值(如果是“”将null插入数据库) 但是,我在数据库列中获得了一个空格。
string sbcId = gvTest.DataKeys[gr.RowIndex]["myColumn"].ToString();
insgnp.Parameters.Add(new OleDbParameter("EMPID", (sbcId==""?DBNull.Value.ToString():sbcId)));
答案 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());
}
}
}
答案 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