我正在开发一个C#桌面应用程序,并且有一个关于如何使用SqlDataReader从数据库中检索值的问题。 当值是表中的varchar时,我使用以下方法将该值保存在实体中:
if (dr.HasRows){
while (dr.Read()){
Empleado dato = new Empleado();
dato.DUIEmp = dr.IsDBNull(0) ? "No Info" : dr.GetString(0);
...
但我不知道如何从数据库中检索十进制值,暂时我使用它但不起作用:
dato.Salario = dr.IsDBNull(4) ? (decimal?)null : Convert.ToDecimal(dr.GetDecimal(4));
并且日期值
也有同样的问题dato.FechaIngreso = dr.IsDBNull(6) ? "No Info" : dr.GetDateTime(6);
请您帮我,告诉我如何使用SqlDatareader检索这些类型的数据?
答案 0 :(得分:1)
如果类Empleado
的{{1}}属性声明为Decimal(不可为十进制),那么你应该检索你的值,在null的情况下指定一个默认值(就像你在使用字符串字段一样) )
Salario
另请注意,调用GetDecimal也不需要Convert.ToDecimal
因此,如果您有其他日期类型,那么您可以使用相同的方法,
dato.Salario = dr.IsDBNull(4) ? default(decimal) : dr.GetDecimal(4);
答案 1 :(得分:0)
默认情况下,valueLine[i+1]
和decimal
不可为空。因此,在您声明了DateTime
和Salario
属性的类中,将这些属性设为可为空;
FechaIngreso
答案 2 :(得分:0)
如果您的课程已经上课:
**9/22/2015**
Article 3 (10 upvotes)
Article 1 (5 upvotes)
Article 2 (3 upvotes)
**9/21/2015**
Article 6 (3 upvotes)
Article 5 (2 upvotes)
Article 4 (1 upvote)
这样:
decimal? Salario {get;set;}
DateTime? FechaIngreso {get;set;}