if(dr.GetDouble(2)>dr.GetDouble(4) || dr.GetDouble(2)==dr.GetDouble(4)) 
数据库字段类型都是char
这句有问题说我无效转换
应该怎么改一下?
或者SQl语句改一下怎么实现上面那个功能?
这是原来SQL语句
cmd.CommandText ="SELECT point,address,ssz,dw,sxyj FROM realdata  where dw = '"+this.textBox1.Text.Trim()+"' or dw = '"+this.textBox2.Text.Trim()+"' or dw = '"+this.textBox3.Text.Trim()+"' or dw = '"+this.textBox4.Text.Trim()+"' or dw = '"+this.textBox5.Text.Trim()+"'"; 

解决方案 »

  1.   

    你确认数据库中要转换的字段里存着的是可以进行double转换的数据?
    如果确定的话,可以试下double.parse(dr[2].ToString())
      

  2.   

    dr[4].Tostring()==""?0:dr.GetDouble(4)
      

  3.   

    刚才那个贴你结的太快了,我已经在那个帖子里回你了
    试试这样:
    if(Convert.ToDouble(dr[2])>=Convert.ToDouble(dr[4]))
      

  4.   


     if(dr.GetValue(2)>dr.GetValue(4) || dr.GetValue(2)==dr.GetValue(4)) 
    if(dr.GetString(2)>dr.GetString(4) || dr.GetString(2)==dr.GetString(4)) 
      

  5.   

    if ( Convert.IsDBNULL(dr[2])==false && Convert.IsDBNULL(dr[4])==false )
    {
      INT A=Convert.ToInt32(dr.GetString(2));
      INT B=Convert.ToInt32(dr.GetString(4));
      if(A>B || A==B) 
       {  }
     
    }
      
      

  6.   

    if(Convert.ToDouble(dr[2].ToString())>=Convert.ToDouble(dr[4].ToString())) 
      

  7.   

    或者double.Parse(dr[2].ToString());试试
      

  8.   

    你试试定义变量转换:
    double par=0; 
    double.TryParse (dr[2].ToString(),out par);
      

  9.   


    double d2 = 0;
    double d4 = 0;
    if(double.TryParse(dr[2].ToString(),out d2) && double.TryParse(dr[4].ToString(),out d4))//先判断一下第三列和第五列是否都能转成double
    {
        if(d2 >= d4)//判断d2和d4的大小
        {
            //继续你的代码
        }
    }
      

  10.   

    TryParse 为获取参数
    这是怎么回事?
      

  11.   

    double.TryParse(dr[2].ToString(),out d2 :是把dr[2].ToString()这个转成double并赋值给d2 所以要定义D2
      

  12.   

    double d2;
    double d4;
    double.TryParse(dr[2]!=null?dr[2].ToString():"0",out d2);
    double.TryParse(dr[4]!=null?dr[4].ToString():"0",out d4);    if(d2 >= d4)//判断d2和d4的大小
        {
            //继续你的代码
        }
      

  13.   

    我是按照你写的那样复制过去的
    然后提示出错 说tryParse 未获取参数 这是怎么回事啊?
      

  14.   

    我是按照你写的那样复制过去的 
    然后提示出错 说tryParse 未获取2参数 这是怎么回事啊?
      

  15.   

    可以加QQ好友说吗?
    这样太慢了 
    我的QQ 58558902
      

  16.   

    try
    {

    SqlConnection sc = new SqlConnection("server=192.1.1.1;uid=sa;pwd=sa;database=kj2006");//连接字符串

    SqlDataAdapter sd = new SqlDataAdapter();
    DataSet ds = new DataSet();
    string str = "SELECT point,address,ssz,dw,sxyj FROM realdata  where dw = '"+this.textBox1.Text.Trim()+"' or dw = '"+this.textBox2.Text.Trim()+"' or dw = '"+this.textBox3.Text.Trim()+"' or dw = '"+this.textBox4.Text.Trim()+"' or dw = '"+this.textBox5.Text.Trim()+"'"; 

    sc.Open();
    sd.SelectCommand = new SqlCommand(str,sc);
    sd.Fill(ds,"realdata");



    SqlCommand cmd = sc.CreateCommand();
    SqlDataReader dr; 
    cmd.CommandText ="SELECT point,address,ssz,dw,sxyj FROM realdata  where dw = '"+this.textBox1.Text.Trim()+"' or dw = '"+this.textBox2.Text.Trim()+"' or dw = '"+this.textBox3.Text.Trim()+"' or dw = '"+this.textBox4.Text.Trim()+"' or dw = '"+this.textBox5.Text.Trim()+"'"; 

    dr = cmd.ExecuteReader(); 

    if (dr.HasRows) 

       



    int i = 0;  StreamWriter sw=new StreamWriter(path1,false,Encoding.GetEncoding("gb2312"));

     
    while (dr.Read()) 

    i++; 
      
    double d2=0;
    double d4=0;
    double.TryParse(dr[2]!=null?dr[2].ToString():"0",out d2);
    double.TryParse(dr[4]!=null?dr[4].ToString():"0",out d4);
    if(d2 >= d4)//判断d2和d4的大小
    {
    //继续你的代码
    sw.Write(dr.GetString(0).TrimEnd()+"   "); 
    sw.Write(dr.GetString(1).TrimEnd()+" ");
    sw.Write(dr.GetString(2).TrimEnd()+" ");
    sw.Write(dr.GetString(3).TrimEnd()+"   ");
    sw.Write(dr.GetString(4).TrimEnd()+"  ");
    sw.WriteLine("");
    }
    }
      

         sw.Close(); 
         dr.Close();   

       
        
      
           






    sc.Close();




    }

     

    catch(Exception eorr)
    {
    MessageBox.Show("错误:"+eorr.Message+" !");

    }
      

  17.   

    出错提示贴上来看一下,按理说用TryParse即使转换失败也不会抛出异常的啊
      

  18.   

    提示出错 说tryParse 未获取2参数
    就过不去 没启动就提示出错了
      

  19.   

    double.TryParse(dr[2]!=null?dr[2].ToString():"0",out d2); 
    double.TryParse(dr[4]!=null?dr[4].ToString():"0",out d4); 
      

  20.   

    double.TryParse(dr[2]!=null?dr[2].ToString():"0",out d2); 
    double.TryParse(dr[4]!=null?dr[4].ToString():"0",out d4); 
      

  21.   

    你先这么写
    double.TryParse(dr[2].ToString(),out d2); 
    double.TryParse(dr[4].ToString(),out d4); 
      

  22.   

    double.TryParse(dr[2].ToString(),out d2); 
    double.TryParse(dr[4].ToString(),out d4); 
    还是出错
    重载“TryParse”方法未获取“2”参数
    重载“TryParse”方法未获取“2”参数
      

  23.   


    double d2; 
    double d4; double.TryParse(dr[2]!=null?dr[2].ToString():"0", System.Globalization.NumberStyles.None, null, out d2);
    double.TryParse(dr[4]!=null?dr[4].ToString():"0", System.Globalization.NumberStyles.None, null, out d4);
      

  24.   

    是的  2003
    我已经改好了 但是好像判断不准确 把所有数据都写出来了
    下面是代码
    帮我看下
    try
    {

    SqlConnection sc = new SqlConnection("server=192.1.1.1;uid=sa;pwd=sa;database=kj2006");//连接字符串
    sc.Open();


    SqlCommand cmd = sc.CreateCommand();
    SqlDataReader dr; 
    cmd.CommandText ="SELECT point,address,ssz,dw,sxyj FROM realdata  where dw = '"+this.textBox13.Text.Trim()+"' or dw = '"+this.textBox14.Text.Trim()+"' or dw = '"+this.textBox15.Text.Trim()+"' or dw = '"+this.textBox16.Text.Trim()+"' or dw = '"+this.textBox17.Text.Trim()+"'"; 

    dr = cmd.ExecuteReader(); 

      if (dr.HasRows) 

       



    int i = 0;   StreamWriter sw=new StreamWriter(path,false,Encoding.GetEncoding("gb2312"));

     
    while (dr.Read()) 

    i++; 
      
    double d2;
    double d4;
    double.TryParse(dr[2]!=null?dr[2].ToString():"0",System.Globalization.NumberStyles.None, null,out d2);
    double.TryParse(dr[4]!=null?dr[4].ToString():"0",System.Globalization.NumberStyles.None, null,out d4);
    if(d2 >= d4)//判断d2和d4的大小
    {
    //继续你的代码



    timer1.Enabled=false;
    timer2.Enabled=false;
    timer3.Enabled=false;
    timer4.Enabled=false;
    sw.Write(dr.GetString(0).TrimEnd()+"   "); 
    sw.Write(dr.GetString(1).TrimEnd()+" ");
    sw.Write(dr.GetString(2).TrimEnd()+" ");
    sw.Write(dr.GetString(3).TrimEnd()+"   ");
    sw.Write(dr.GetString(4).TrimEnd()+"  ");
    sw.WriteLine("");
    }
    }


    sw.Close(); 
    dr.Close();   

       
        
      
           






    sc.Close();




    }

     

    catch(Exception eorr)
    {
    MessageBox.Show("错误:"+eorr.Message+" !");

    }