问题描述
stringdocid="";stringuserid="";stringisexpire="";stringtoday="";stringtablename="";floatfine;//stringBdate="";//stringRdate="";stringtitle="";publicvoidselect(){docid=this.Docidtxt.Text;userid=this.Useridtxt.Text;SqlConnectionconn=db.createcon();conn.Open();stringsql="select*fromBorrowinfowhereAllbookid='"+this.docid+"'";SqlCommandcmdselect=newSqlCommand(sql,conn);SqlDataReadersdr=cmdselect.ExecuteReader();while(sdr.Read()){Session["Bdate"]=sdr["Borrowdate"].ToString();Session["Rdate"]=sdr["Shredate"].ToString();Session["Title"]=sdr["Title"].ToString();title=Session["Title"].ToString();}}publicvoidselect1(){SqlConnectionconn=db.createcon();conn.Open();stringsql="select*fromUpdateinfo";SqlCommandcmd=newSqlCommand(sql,conn);SqlDataReadersdr=cmd.ExecuteReader();while(sdr.Read()){Session["dfine"]=sdr["Dayfine"].ToString();//数据库中定义的日罚款金额Dayfine是float型}today=(System.DateTime.Now.Date).ToString();//获取系统当前日期DateTimet=Convert.ToDateTime(today);//将当前日期转换成日期类型DateTimes=Convert.ToDateTime(Session["Rdate"]);//if(t>s)//比较是否超期{isexpire="是";TimeSpandays=t.Subtract(s);intdaynum=days.Days;intdayfine=(Int32)Session["dfine"];fine=daynum*dayfine;//计算罚款金额}else{isexpire="否";fine=0;}}对于:intdayfine=(Int32)Session["dfine"];出错提示为:指定的转换无效若改为:intdayfine=Convert.ToInt32(Session["dfine"]);出错提示为:字符串格式不正确如果不进行类型转换,会提示*不能作用于两种不同类型
解决方案
解决方案二:
intdayfine=Convert.ToInt32(Session["dfine"].ToString());????
解决方案三:
intdayfine=Convert.ToInt32(Session["dfine"])应写成intdayfine=Convert.ToInt32(Session["dfine"].ToString());
解决方案四:
Session["dfine"]中的内容不是整数类型,导致转换失败
解决方案五:
intdayfine=int.parse(Session["dfine"].ToString());不行吗?
解决方案六:
intdayfine=Int32.Parse(Session["dfine"].ToString());
解决方案七:
这些方法都试了,仍出现以上错误
解决方案八:
直接:(int)Session["dfine"]
解决方案九:
你看看吧,不是转换的问题,是数据本身就不能转换为int型,调试一下,看看Session["dfine"]中究竟有没有值,是什么样的值。
解决方案十:
Session["dfine"]里面的数据是float,为什么转换成int?floatdayfine=Convert.ToSingle(Session["dfine"]);intabc=Convert.ToInt32(dayfine);
解决方案十一:
因为dayfine要和前面的天数相乘,天数daynum就是整型啊,如果不转换会提示错误,我试试toopoolin的方法看行不行
解决方案十二:
谢谢,toopoolin给我的提示农好了,谢谢大家帮忙了