Tag: dbnull

将DBNULL值解析为double

我使用以下行将datarow值转换为double。 double.parse(Convert.ToString(datarow)); 如果datarow是DBNULL ,我会收到以下exception: ‘double.Parse(Convert.ToString(data))’引发了‘System.FormatException’类型的exception 如何在不使用tryparse.情况下处理这个tryparse.

Linq to DataTable – 无法强制转换DBNull

Linq的新手,如果这是基本的,请道歉。 此查询抛出错误{“无法将DBNull.Value强制转换为’System.Int64’。请使用可空类型。”}当我枚举结果时。 private void AddLevels(long rootid) { var results = from row in data.AsEnumerable() where row.Field(“ParentID”) == rootid select row; foreach (DataRow row in results) { //do stuff } } ParentID列确实接受空值 – 我是否需要单独处理这些? EDIT2:下面仍然使用Linq的实际解决方案。 编辑:我通过废除Linq并仅使用DataTable.Select语句解决了这个问题。 如果有人对性能差异有所了解,我会感兴趣。

当我使用XmlSerialiser对其进行反序列化时,为什么我的DbNull不是单例?

我一直认为DbNull.value是一个单身人士。 因此你可以做这样的事情: VB.NET: If someObject Is DbNull.Value Then … End if C#: If (someObject == DbNull.Value) { … } 但是最近,我使用XmlSerialiser序列化了一个DbNull实例,突然间它不再是单例了。 类型比较操作(如C#(obj是DBNull))工作正常。 代码如下: [Serializable, System.Xml.Serialization.XmlInclude(typeof(DBNull))] public class SerialiseMe { public SerialiseMe() { } public SerialiseMe(object value) { this.ICanBeDbNull = value; } public Object ICanBeDbNull { get; set; } } public void Foo() { var serialiseDbNull = […]

将DBNull.Value和Empty文本框值传递给数据库

我的页面上有一些文本框可以为空,因为它们是可选的,我有这个DAL代码 parameters.Add(new SqlParameter(“@FirstName”, FirstName)); parameters.Add(new SqlParameter(“@LastName”, LastName)); parameters.Add(new SqlParameter(“@DisplayName”, DisplayName)); parameters.Add(new SqlParameter(“@BirthDate”, BirthDate)); parameters.Add(new SqlParameter(“@Gender”, Gender)); 任何这些字段都可以为空。 问题是当它们为空时,我收到Procedure XXX requires @FirstName which was not supplied 然后我将代码更改为 parameters.Add(new SqlParameter(“@FirstName”, String.IsNullOrEmpty(FirstName) ? DBNull.Value : (object)FirstName)); parameters.Add(new SqlParameter(“@LastName”, String.IsNullOrEmpty(LastName) ? DBNull.Value : (object) LastName)); parameters.Add(new SqlParameter(“@DisplayName”, String.IsNullOrEmpty(DisplayName) ? DBNull.Value : (object) DisplayName)); parameters.Add(new SqlParameter(“@BirthDate”, BirthDate.HasValue ? (object)BirthDate.Value : […]

ExecuteScalar返回null或DBNull(开发或生产服务器)

我正在尝试在C#中的现有DataRow中添加一列。 之后,该列将填充我的数据库中的单个值。 DataRow dr已存在且列“COLNAME”也存在。 comTBP是我的SqlCommand 。 dr[“COLNAME”] = Convert.ToInt32(comTBP.ExecuteScalar()); 如果我的数据库中有值,并且ExecuteScalar()可以获得该值,则一切正常。 如果我在我的开发服务器(本地)上测试此代码,如果ExecuteScalar()返回null或DBNull并且我的新列的值为0,它也可以工作。但是如果我将代码部署到生产服务器,则会出现问题。 如果我做同样的事情,使用相同的数据库,它会抛出一个Exception,并显示一条消息,它无法将DBNull转换为Int32。 我的问题是为什么这个错误出现在生产服务器上而不是我的本地开发服务器上?

无法隐式转换类型’decimal?’ 到’十进制’。

sdr是我的sqldatareader,我想检查一个十进制类型的curPrice值是否为null。 inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7); 这是我收到的错误消息: 无法隐式转换类型’decimal?’ 到’十进制’。 存在显式转换(您是否错过了演员?) 哪里出错了,请有人告诉我。

参数varbinary数据类型中的空值

如何在参数varbinary数据类型中添加空值? 当我执行以下代码时: using (SqlConnection myDatabaseConnection1 = new SqlConnection(myConnectionString.ConnectionString)) { using (SqlCommand mySqlCommand = new SqlCommand(“INSERT INTO Employee(EmpName, Image) Values(@EmpName, @Image)”, myDatabaseConnection1)) { mySqlCommand.Parameters.AddWithValue(“@EmpName”, textBoxEmpName.Text); mySqlCommand.Parameters.AddWithValue(“@Image”, DBNull.Value); myDatabaseConnection1.Open(); mySqlCommand.ExecuteNonQuery(); } } 我得到以下System.Data.SqlClient.SqlException : 不允许从数据类型nvarchar到varbinary(max)的隐式转换。 使用CONVERT函数运行此查询。