while(dr.Read())
你這句錯了吧。        while(dr1.Read())

解决方案 »

  1.   

    看清楚点,你这个编译都编译不了,改成这样试试:
    其中的0,1就是字段的顺序序号!!!while(dr1.Read())
    {
    html1 += dr1.GetString(0) + ";" + dr1.GetString(1) + "  ";}
      

  2.   

    BearRui(开心熊) 
    为什么这样写就对了呢,能不能给个解释啊?
      

  3.   

    BearRui(开心熊)
    还是不行啊,报错: “指定的转换无效”。
      

  4.   

    你看看,DataReader不支持这样的写法dr1["songname"]。只能用GetString或其他get方法取值,但这些get方法的参数都是int型,就是字段的序号。如果要用字段名就这样:dr1.GetString(dr1.GetOrdinal("songname"));
      

  5.   

    加个判断
    string html1=""; 
    string sql1 = "select * from shop_fangshi";
            OleDbCommand cmd1 = new OleDbCommand(sql1,conn);
            OleDbDataReader dr1 = cmd1.ExecuteReader();
            while(dr.Read())
            {
    New---->if  ((dr1["songname"]!=DbNull.Value) && (dr1["money"]"]!=DbNull.Value)) 
               html1 += dr1["songname"].ToString + ";" + dr1["money"].ToString() + "  ";
                
            }
    记住dr.close(),不然要吃苦头的
      

  6.   

    html1 += dr1["songname"].ToString + ";" + dr1["money"].ToString() + "  ";
    这句不对啊,既然在html1后面用+了,就不能再用dr1["songname"].ToString + 了。
    不如将html1后面的+去掉。
      

  7.   

    而且,dr1["songname"].ToString
    要写成dr1["songname"].ToString()才行