代码如下
 while (reader.Read())
            {
                string aa = System.Convert.ToString(reader.GetChar(0));
                if (aa == this.TextBox1.Text)
                {
                    this.Label2.Text = "产品编号为" + Convert.ToString(reader.GetChar(0)) + "的货物,名称为"+ Convert.ToString(reader.GetChar(1)) + ",货物数量为" + Convert.ToString(reader.GetInt16(2));
                    flag = 1;
                    return;
                }
            }
我的目的就是通过reader.Read方法遍历数据库中的数据(该数据为nchar(10)类型,第一列),将之与传递进来的textbox.text比较,textbox.text显然是string类型,这就要类型转化对吧,问题是我这么转换运行出的web提示我:string aa = System.Convert.ToString(reader.GetChar(0))这行不支持所指定的方法。
另外,将convert.tostring方法改为直接在后面加上to.string()方法还是一样,web显示不支持所指定的方法,另外,把System去掉也一样

解决方案 »

  1.   

    string aa = System.Convert.ToString(reader.GetChar(0));
    改成
    var tmp = reader.GetChar(0);
    string aa = tmp.ToString();
    可以看得更清楚,到底是哪个方法不支持。
      

  2.   

     string aa =reader[0]==null?"":read[0].ToString();
      

  3.   

     string aa =(reader[0] is System.DBNull)?"":read[0].ToString();
      

  4.   

    根据你的方法确实不在if判定时报错了,但是却出现判定结果不正确的情况
    我的判定语句:if (aa.Equals(this.TextBox1.Text))
    我断点跟踪了下,确定aa是取到值的,而且我textbox的输入也是和aa在数据库里的取到的某个数据一样,唯一区别的就是aa="001   ",textbox.text="001"这里的空格会影响判定结果么
      

  5.   

    结贴了,谢谢楼上的大神啊,就是因为空格的问题,貌似从数据库中取char型数据都存在这样的问题,trim一下就好了~话说本菜为了这个问题纠结三天了
      

  6.   

    结贴了,谢谢楼上的大神啊,就是因为空格的问题,貌似从数据库中取char型数据都存在这样的问题,trim一下就好了~话说本菜为了这个问题纠结三天了