0

約20のSQLクエリを実行する次のメソッドがあります。結果をクライアントに返す最良の方法は何ですか?

public int Results()
{
    using (var conn = GetConnection())
            using (var cmd = new SqlCommand())
            {
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = @"SELECT TOP 1 stdent_number from Students";

                conn.Open();
                var result = (int)cmd.ExecuteScalar();

                cmd.CommandText = @"SELECT TOP 1 class_number from Classes";
        var number = (int)cmd.ExecuteScalar();

                cmd.CommandText = @"SELECT TOP 1 table from Tables";
        var table = (int)cmd.ExecuteScalar();

                cmd.CommandText = @"SELECT TOP 1 suite from Suites";
        var suite = (int)cmd.ExecuteScalar();

                 .....
                //I want to return result, number, table and suite so they can be populated on client
        //What is the best way to return? Should I create IEnumerable and add values to it and return
        //as IEnumerable or should these be returned all separately or as a dictionary?
        //Also this is just an example in real time I have at least 15 values from sql queries that I       //want to return

            }
}
4

2 に答える 2

0

procを作成したくない場合は、以下のようにしてみてください

以下のような文字列変数にすべてのクエリを渡します...

string sql = "SELECT TOP 1 stdent_number from Students; SELECT TOP 1 class_number from Classes; SELECT TOP 1 table from Tables; SELECT TOP 1 suite from Suites";

その後、以下のようにしてみてください。

using (SqlConnection conn = new SqlConnection(connection))
{
    var result,number,table;
    conn.Open();
            Cmd = new SqlCommand(sql, conn);
            SqlDataReader sqlReader = Cmd.ExecuteReader();
            while (sqlReader.Read())
            {
                result = dr[0].ToString();
            }

            sqlReader.NextResult();

            while (sqlReader.Read())
            {
                number = dr[0].ToString();
            }

            sqlReader.NextResult();

            while (sqlReader.Read())
            {
                table = dr[0].ToString();
            }

            sqlReader.Close();
            Cmd.Dispose();
            conn.Close();
}

また、このリンクを試してください:複数のセットを返す

于 2013-02-05T15:36:40.963 に答える
0

あなたの質問を正しく理解した場合、成功したすべてのクエリ データをこの関数からクライアントに戻す方法が必要です。Int の関数の戻り値の型を使用する代わりに、独自のクラス (DTO の [データ転送オブジェクト]) を作成して、関数からクライアントに複数の情報を渡すことをお勧めします。

于 2013-02-05T15:28:41.367 に答える