我c#写了段代码 插入到数据库中
            int P_int_returnValue = doperate.InsertOrder(Convert.ToInt32(kehuid.Text), Convert.ToDecimal(price.Text), Convert.ToDecimal(haspay.Text.ToString()), Convert.ToDateTime(yuqidaokuan.Text.ToString()), Convert.ToDateTime(shijidaokuan.Text.ToString()), Convert.ToDateTime(qimiao.Text.ToString()), Convert.ToDateTime(fache.Text.ToString()), Convert.ToDateTime(yuqidaohuo.Text.ToString()), Convert.ToDateTime(shijidaohuo.Text.ToString()));
 
必须每个参数都给出一个值时才能成功,我如果几个值空着的话 就会提示无法转换类型值请问有什么解决办法?

解决方案 »

  1.   

    在执行insert前先判断参数是否为null
      

  2.   

    2楼正解,判断text是否为空,不为空时转换,为空是则提示,就是加一个if语句就ok把
      

  3.   

    每个TXT的值先做判断或写正则表达式
      

  4.   

    本想弄完给你例子,好长。转了一半。你对照着弄完。int p1;
    decimal p2,p3;
    DateTime p4,p5;
    if(int.TryParse(kehuid.Text,out p1) && 
    decimal.TryParse(price.Text,out p2) && 
    decimal.TryParse(haspay.Text,out p3) &&
    DateTime.TryParse(yuqidaokuan.Text,out p4) &&
    DateTime.TryParse(shijidaokuan.Text,out p5))
    {
    int P_int_returnValue = doperate.InsertOrder(p1,p2,p3, p4, p5, Convert.ToDateTime(qimiao.Text.ToString()), Convert.ToDateTime(fache.Text.ToString()), Convert.ToDateTime(yuqidaohuo.Text.ToString()), Convert.ToDateTime(shijidaohuo.Text.ToString()));
    }说的很清楚了。你用到的参数做检查。你每个fache之类的控件是不是null,Text属性是不是null都要判断。
      

  5.   

    text的肯定没问题,Datetime的判断一下就行。
      

  6.   

    检查的意思就是。。在UI利用JS或者正则。。或者其他BT的方法。。设置你时间只能输入时间格式。。字符只能输入字符形式。。INT只能是INT。。VS里面的一个验证的控件就可以搞定。。那个红色的。叫V。。什么g。。什么的自己看看去
      

  7.   

    string(kehuid.Text)?"0":kehuid.Text;
    类型使用int.TryParse 
      

  8.   

    string.IsNullOrEmpty(kehuid.Text)?"0":kehuid.Text;
    类型使用int.TryParse  
      

  9.   

    private int parseInt(object obj)
    {
       int result = 0;
       if(obj == null)
          return result;
       
       if(!int.TryParse(obj.ToString(),out result)){
          return result;
       }   return result;
    }decimal,double,float 改改就行了
    使用时 parseInt(textBox1.Text);