为什么数字不允许为空????????
下面语句中,当novalue值为空时,则就提示错误.当novalue值不为空时,则正常执行.
我现在要求:当novalue值为空时,也可以正常运行.是不是要用赋值(赋值为NULL,或者"")语句?                  
 int novalue=int.Parse(((TextBox)e.Item.FindControl("CTID")).Text);
cmd.Parameters.Add("v_CTID",OracleType.Int32).Value=novalue;输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 
行 73:  cmd.CommandType = CommandType.StoredProcedure;
行 74: 
行 75:  int novalue=int.Parse(((TextBox)e.Item.FindControl("CTID")).Text);
行 76: 
行 77:  cmd.Parameters.Add("v_CTID",OracleType.Int32).Value=novalue;
 源文件: c:\wk\webapplicationcsharp\sales.aspx.cs    行: 75 

解决方案 »

  1.   

    不是数字不能为空,而是Text为空时不能将其转为int 数据类型
      

  2.   

    你这个是在access中,你可以让他有个默认值啊
    在sql server就没有这个问题了
      

  3.   

    int.Parse(null)会抛出异常 public static int ToSafeInt(Object value, int defaultValue){
    try{
    return int.Parse(value.toString());
    }catch(Exception e){
    return defaultValue;
    }
    }ToSafeInt(((TextBox)e.Item.FindControl("CTID")).Text, 0);
      

  4.   

    要么你赋一个默认值.要么 dbnull.不能为null,这个在数据库里没有这个类型 .///*************************///
    这两年来慢慢习惯了光说不练
    ///*************************///
      

  5.   

    使用异常处理机制
    try
    {
    int novalue=int.Parse(((TextBox)e.Item.FindControl("CTID")).Text);
    cmd.Parameters.Add("v_CTID",OracleType.Int32).Value=novalue;
    }
    catch(FormatExceptio)
    {
     MessageBox.Show("输入字符串的格式不正确,请重新输入!");
    }
      

  6.   

    int.Parse(((TextBox)e.Item.FindControl("CTID")).Text);
    数据类型转换的时候是不能为空值的,解决方法:
    1、前台验证不能为空
    2、给个默认值(0)
      

  7.   

    int novalue = Convert.ToInt32((((TextBox)e.Item.FindControl("CTID")).Text));
    cmd.Parameters.Add("v_CTID",OracleType.Int32).Value = novalue;这样的话,如果CTID为空的话,novalue = 0