如何在打开的MySqlDataReader中检查NULL值?以下不起作用;它总是点击else:if(rdr.GetString("timeOut")==null){queryResult.Egresstime="Loggedin";}else{queryResult.Egresstime=rdr.GetString("timeOut");}rdr.IsDbNull(inti)只接受列号,不接受名称。 最佳答案 varordinal=rdr.GetOrdinal("timeOut");if(rdr.IsDBNull(ordinal))
我想从数据库中检索十进制值,我想知道检查空值的推荐方法是什么。我在MSDN-DBNull.ValueField上看到过很少使用此检查。因此,reader.IsDBNull是检查空值的最佳/最有效方法吗?我创建了2个示例方法:publicstaticdecimal?GetNullableDecimal(SqlDataReaderreader,stringfieldName){if(reader[fieldName]==DBNull.Value){returnnull;}return(decimal)reader[fieldName];}publicstaticdecimal?GetNul
我有以下C#代码:sqlCommand.Parameters.AddWithValue("@Parameter",table.Value??DBNull.Value);但它会抛出以下编译错误:Operator??cannotbeappliedtooperandsoftypestringandSystem.DBNull为什么编译器不允许这种语法? 最佳答案 两个操作数都必须是对象。使用显式转换:(object)table.Value??DBNull.Value; 关于c#-运算符'??'不
如果我有类似下面的代码:while(myDataReader.Read()){myObject.intVal=Convert.ToInt32(myDataReader["mycolumn"]??0);}它抛出错误:ObjectcannotbecastfromDBNulltoothertypes.将intVal定义为可为null的int不是一个选项。我有办法做到以上几点吗? 最佳答案 还有一种选择:while(myDataReader.Read()){myObject.intVal=(myDataReader["mycolumn"]a
param7[1].Value=tbLastName.Text.Length>0?tbLastName.Text:DBNull.Value;为什么这是不可能的,还有什么建议可以尝试吗?20个参数的If/else是不行的。 最佳答案 问题是(如错误消息所示)条件表达式在两个分支上需要相同的类型,否则需要从一种类型到另一种类型的隐式转换。在你的情况下,没有一个,所以你得到了错误。一种快速修复方法是将其中一个值转换为(object)(这很好,因为DbParameter.Value无论如何都是object类型。)所以这应该适合你:param
我有一个DataTable,它有很多列。其中一些列可以为空。DataTabledt;//Valueset.DataRowdr;//Valueset.//dr["A"]ispopulatedfromT-SQLcolumndefinedas:intNULL那么,什么是从DataRow中的值转换为可为null的变量的最简洁的形式。理想情况下,我可以这样做:int?a=dr["A"]asint?;编辑:原来你可以这样做,副作用是如果你的模式类型不是整数,那么它总是会返回无效的。Ruben使用dr.Field("A")的答案确保类型不匹配不会悄无声息地失败。当然,这将通过彻底的单元测试来解决。相
我经常在处理从SqlDataAdapters返回的DataRows时遇到问题。当我尝试使用如下代码填充对象时:DataRowrow=ds.Tables[0].Rows[0];stringvalue=(string)row;在这种情况下,处理DBNull的的最佳方法是什么。 最佳答案 可为空的类型很好,但仅适用于不可为空的类型。要使类型“可为空”,请在类型后附加一个问号,例如:int?value=5;我还建议使用“as”关键字而不是转换。您只能在可空类型上使用“as”关键字,因此请确保您正在强制转换已经可以为空的内容(如字符串),或者
我正在尝试执行一个存储过程,然后使用if语句检查空值,但我做空了。我是VB专家,所以如果我犯了小学生语法错误,请多多包涵。objConn=newSqlConnection(strConnection);objConn.Open();objCmd=newSqlCommand(strSQL,objConn);rsData=objCmd.ExecuteReader();rsData.Read();if(!(rsData["usr.ursrdaystime"].Equals(System.DBNull.Value))){strLevel=rsData["usr.ursrdaystime"].T
我将VisualStudio2013与EntityFramework5和MySQLServer5.7.9一起使用。当尝试从数据库创建模型(或“从数据库更新模型”)时,会出现以下消息:'System.Data.StrongTypingException:Thevalueforcolumn'IsPrimaryKey'intable'TableDetails'isDBNull.--->System.InvalidCastException:Specifiedcastisnotvalid.我知道以前有人问过这个问题,但我没有找到任何解决方案。我也没有降级到MySQL5.6的选项。即使是简单的表
C#ODB.NETOutparameterisalwaysDBNull我在OracleSQLServer的包中有一个存储过程。这个过程有输入和输出参数。该过程本身有效,当在OracleSQLDeveloper中执行时,输出参数读取预期的输出(最后一行的列值)。此过程必须由WebAPI通过ODP.NET(Oracle托管数据访问)调用。问题:永远不会返回输出参数(ODP中的Long类型和db中的NUMBER(12,0)类型)。执行命令后输出参数始终为DBNull。下面是我的代码的相关部分(其他参数省略):打包程序:12345PROCEDUREpost_event(event_idOUTOPIS_