菜鸟学生求大神帮助

static public DataSet ReturnDataSet(string sqlStr)
{
try
{
DataSet ds = new DataSet();
SqlConnection con = GetConn();
SqlDataAdapter da = new SqlDataAdapter(sqlStr, con);
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw (ex);
}
DataSet ds2;
if (Sno.Equals("1") && sex.Equals("male"))
sql = "select * from InfoTable,KQTable,JCTable,GZTable,DETable where GZTable.Sno='111' and InfoTable.Sno=GZTable.Sno and GZTable.Sno=JCTable.Sno and JCTable.Sno=KQTable.Sno and DETable.DENum=InfoTable.DENum";
else
sql = "select * from InfoTable,KQTable,JCTable,GZTable,DETable where GZTable.Sno='222' and InfoTable.Sno=GZTable.Sno and GZTable.Sno=JCTable.Sno and JCTable.Sno=KQTable.Sno and DETable.DENum=InfoTable.DENum";
ds2 = DBTool.ReturnDataSet(sql);
dataGridViewY.DataSource = ds2.Tables[0].DefaultView;
dataGridViewB.DataSource = ds2.Tables[1].DefaultView;
dataGridViewK.DataSource = ds2.Tables[2].DefaultView;
dataGridViewJ.DataSource = ds2.Tables[3].DefaultView;
dataGridViewG.DataSource = ds2.Tables[4].DefaultView;

谢谢!!
------解决思路----------------------
你的数据源只有一个表
------解决思路----------------------
因为你这句话ds2 = DBTool.ReturnDataSet(sql);返回的DataSet里面只有一个表,即ds2.Tables[0]。
------解决思路----------------------
ds2 = DBTool.ReturnDataSet(sql); 这个ds2的dataSet里面只有 一个sql语句执行出来的 datatable数据 相当于一个数组里面只有一个 索引为0 当你取索引为1 的数组数据时 当然报错了

------解决思路----------------------
你查询10张表,返回的集合如果只是一个集合,那就是一个Datatable,所以你只有DataTable[0].
你可以把你的Sql放到数据库中去执行一下,如果你查询出来的结果只显示在一张表里面,那就只有一个datatable。
你这里要多次查询并把结果放到相应的datatable里面才行,或者你要重新定义几个Datable 并把你查询出来的这个Datable进行拆分。然后再给datageidview 绑定
------解决思路----------------------
看你sql里面返回的只有一张表呀