请问我,在某按妞onclick事件中,如何调用,我的调用方法对吗,还有调用了如何读取dataset中的字段值protected void btnsavesend_Click(object sender, EventArgs e)
    {Conn myconn = new Conn();
            myconn.Open();
            string sel = "select * from aa";
            SqlDataAdapter aCommand = new SqlDataAdapter(sel, myconn.ChangeType());
            aCommand.SelectCommand.CommandType = CommandType.Text;
            SqlDataReader datareader = aCommand.SelectCommand.ExecuteReader();
            if (datareader.Read() == true)
            {
                GetDataSet(datareader);//请问是这样调用的吗?
                datareader.Close();
                
            }
            myconn.Close();
            myconn.Dispose();
    }
string aa=DataSet ....//怎么取得某字段值?
----------------------------------------------------
 public static DataSet GetDataSet(IDataReader reader)    
  {    
   DataTable table = new DataTable();   
   int fieldCount = reader.FieldCount;
    
   for (int i = 0 ; i < fieldCount ; i++)    
   {    
    table.Columns.Add(reader.GetName(i) , reader.GetFieldType(i));
   }
 
   table.BeginLoadData(); 
   object[]   values   =   new   object[fieldCount];
   while (reader.Read())    
   {    
    reader.GetValues(values);    
    table.LoadDataRow(values , true);
   }   table.EndLoadData();
  
   DataSet ds = new DataSet();
   ds.Tables.Add(table);
  
   return ds;
  }

解决方案 »

  1.   


    protected void btnsavesend_Click(object sender, EventArgs e) 
        {Conn myconn = new Conn(); 
                myconn.Open(); 
                string sel = "select * from aa"; 
                //SqlDataAdapter aCommand = new SqlDataAdapter(sel, myconn.ChangeType()); 
                //aCommand.SelectCommand.CommandType = CommandType.Text; 
               // SqlDataReader datareader = aCommand.SelectCommand.ExecuteReader(); 
                 SqlComman cmd=new SqlCommand(sel,myconn);
                 myconn.Open();//如果按照你的写法数据库不需要打开关闭,因为SqlDataAdapter会自动打开和关闭
                 SqlDataReader dr=cmd.ExecuteReader();
                  if(dr.Read())                               // if (datareader.Read() == true) 
                { 
                    DataSet ds=GetDataSet(dr);//定义一个DataSet  对象接受执行结果
                    dr.Close(); 
                    string aa=ds.tables[0].Rows[i]["字段名"];//取值,i表示行按照自己的需要写,字段名写表中存在的字段
                } 
                myconn.Close();             
        } 
              //string aa=DataSet ....//怎么取得某字段值?            ---------------------------------------------------- 
    public static DataSet GetDataSet(IDataReader reader)    
      {    
      DataTable table = new DataTable();  
      int fieldCount = reader.FieldCount; 
        
      for (int i = 0 ; i < fieldCount ; i++)    
      {    
        table.Columns.Add(reader.GetName(i) , reader.GetFieldType(i)); 
      }   table.BeginLoadData(); 
      object[]  values  =  new  object[fieldCount]; 
      while (reader.Read())    
      {    
        reader.GetValues(values);    
        table.LoadDataRow(values , true); 
      }   table.EndLoadData(); 
      
      DataSet ds = new DataSet(); 
      ds.Tables.Add(table); 
      
      return ds; 
      } 
      

  2.   

    DataSet 里取值:
    DataSet ds=new DataSet();
    string value=ds.Table[0].Rows[0]["这里写上你要取值的列的名字"].Tostring();Table[0]是指DataSet里的第一个表内容里面的数据,Rows[0]是指第一行,然后后面跟的["列名"]就是你要取值的列里的值
      

  3.   

     string aa=ds.tables[0].Rows[i]["字段名"];
    这句报错,说"在位置0处没有任何行"
      

  4.   

    看来 你并没有真正理解dataset的含义,dataset 其实就是很多datatable的集合,当你执行查询的时候,查询的结果保存在dataset的某个datatable中,一般情况一个dataset中就一个datatable。
    你说的读取dataset中字段的值,应该是读取datatable中的值吧?
    其实你要取值的话,可以不用那个函数,不用datareader就可以了
                    try
                    {
                        string str = "SELECT * FROM 表 where...";
                        SqlDataAdapter da = new SqlDataAdapter(str, oracleconn);
                        DataSet ds = new DataSet();
                        da.Fill(ds);
                        DataTable dt = ds.Tables[0];
                        string result
                        foreach (DataRow dr in dt.Rows)
                        {
                            result = dr[/*索引*/].ToString();//这就是某字段的值,我取了整个表的,你可以自己改一下
                        }                }
                    catch (SqlException ee)
                    {
                        MessageBox.Show(ee.Message.ToString());
                    }