黑马程序员技术交流社区
标题:
三层架构之DAL层遇到的问题
[打印本页]
作者:
梁思思
时间:
2013-3-14 22:25
标题:
三层架构之DAL层遇到的问题
片段代码:
Student类:
class Student
{
public long Id { get; set; }
public string Name{ get; set; }
public int? Age{ get; set; }
}
复制代码
GetById类:
public static Student GetById(long id)
{
DataTable table=SqlHelper.ExcuteDateTable("select * from T_Student where
Id=@id
", new SqlParameter("@id", id));
if (table.Rows.Count <= 0)
{
return null;
}
else if (table.Rows.Count > 1)
{
throw new Exception("Id重复");
}
else
{
DataRow row = table.Rows[0];
Student student = new Student();
student.Id = (long)row["Id"];
student.Name =(string)FromDbValue(row["Name"]);
student.Age =(int?)FromDbValue(row["Age"]);//这里发生错误:1、当一个数字执行强制转换时,值必须是一个小于无限大的数字2、确保类型可以转换为目标类型。
return student;
}
}
public static object FromDbValue(object value)
{
if(value==DBNull.Value)
{
return null;
}
else
{
return value;
}
}
错误描述:1、当一个数字执行强制转换时,值必须是一个小于无限大的数字。
2、确保类型可以转换为目标类型。
作者:
丁涧泉
时间:
2013-3-15 05:34
楼主可以看看你的if...else中的判断,区间的设计第一个是<=0,第二个是>1,第三个else应该是除了第一种和第二种的区间,在数轴看看
-------第一if---------0----第三个else条件---1-----第二个if条件---->无穷大,由此可以看出应该是判断的条件出现了问题.还请老师指正!!!
第二个问题:对象在转换中的问题,不太明了,求解答
作者:
曾玉锋
时间:
2013-3-15 13:47
int? 类型为可空类型,即可以为数字,也可以为Null,
加一个判断
student.Age =((int?)FromDbValue(row["Age"]))==null ?-1:(int?)FromDbValue(row["Age"]);
试试可以不
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2