1. 程式人生 > >C# SqlDataReader讀取多個結果集

C# SqlDataReader讀取多個結果集

一次執行多個select,然後返回多個查詢結果的話,要使用多結果集技術:

注意:當SQL語句中出現兩條Select語句,例如:string sql = "select * from Employees;select * from TblClass";
可以用SqlDataReader的NextResult()來接收多個結果集
使用
do
{
}
while(reader.NextResult())

static void Main(string[] args)
        {

            string constr = "Data Source=zxtiger;Initial Catalog=itcastcn;Integrated Security=True";
            using (SqlConnection con = new SqlConnection(constr))
            {
                string sql = "select * from Employees;select * from TblClass";
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    con.Open();
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        do
                        {
                            if (reader.HasRows)
                            {
                                while (reader.Read())
                                {
                                    //迴圈列
                                    for (int i = 0; i < reader.FieldCount; i++)
                                    {

                                        //根據索引,獲取列名
                                        //reader.GetName(i);
                                        //獲取當前列的資料型別
                                        string dbType = reader.GetDataTypeName(i);
                                        switch (dbType)
                                        {
                                            case "varchar":
                                            case "nvarchar":
                                            case "char":
                                            case "nchar":
                                                Console.Write(reader.GetString(i) + "\t");
                                                break;
                                            case "int":
                                                Console.Write(reader.GetInt32(i) + "\t");
                                                break;
                                        }
                                    }
                                    Console.WriteLine();
                                }
                            }
                        } while (reader.NextResult()); //當多個結果集的時候可以呼叫NextResult

                    }
                }
            }
            Console.WriteLine("ok");
            Console.ReadKey();
        }