string constr = @"server=(local)\sqlexpress;
integrated security=true;database=northwind";
        string sql1 = @"select companyname,contactname from customers ";
        string sql2 = @"select firstname,lastname from employees ";
        string sql = sql1 + sql2;
        SqlConnection conn = new SqlConnection(constr);
        SqlCommand cmd = new SqlCommand(sql,conn);
        SqlDataReader reader = null;
        try
        {
            conn.Open();
            reader = cmd.ExecuteReader();
            do
            {
                while (reader.Read())
                {
                    Console.WriteLine("{0}:{1}", reader[0], reader[1]);
                }
                Console.WriteLine("".PadLeft(60, '='));
            } while (reader.NextResult());这是代码的主要部分,两个查询语句都是查询了两列,但要是一个查询两列,一个查询一列怎么办
例如要是第二个查询语句变成下边这样怎么办
string sql2 = @"select lastname from employees ";

解决方案 »

  1.   

     reader.FieldCount;列数
    就可以知道有几列了
      

  2.   

    可以根据列数reader.FieldCount构造Console.WriteLine语句,,不过你这个写法我从来没有见过。。
                string text1 = string.Empty;
                string text2 = string.Empty;
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    text1 += "{"+i+"}:";
                    text2 += "sdr["+i+"],";
                }
                text1 = text1.Substring(0,text1.Length - 1);
                text2 = text2.Substring(0,text2.Length - 1);
                Console.WriteLine(text1, text2);