4

複数のテーブルを返すストアド プロシージャがあります。両方のテーブルを実行して読み取るにはどうすればよいですか?

私はこのようなものを持っています:


SqlConnection conn = new SqlConnection(CONNECTION_STRING);
SqlCommand cmd = new SqlCommand("sp_mult_tables",conn);
cmd.CommandType = CommandType.StoredProcedure);

IDataReader rdr = cmd.ExecuteReader();

読み方がわかりません...このタイプのクエリを処理する最良の方法は何ですか。データを DataSet に読み込む必要があると思いますか? これを行う最善の方法は何ですか?

ありがとう。

4

4 に答える 4

5

MSDNからの適応:

using (SqlConnection conn = new SqlConnection(connection))
{
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, conn);
    adapter.Fill(dataset);
    return dataset;
}
于 2008-10-04T14:53:46.870 に答える
0

*すべてのExcelシート名を読み取り、テーブル名をシート名として単一のデータセットに複数のシートを追加します。*

'グローバル変数

Dim excelSheetNames As String()

Dim DtSet As System.Data.DataSet = New DataSet()

Private Sub btnLoadData_Click(ByVal sender As System.Object、ByVal e As System.EventArgs)HandlesbtnLoadData.Click

MyConnectionをOleDbConnectionとして薄暗くする

Dim da As System.Data.OleDb.OleDbDataAdapter

Dim i As Integer

MyConnection = New System.Data.OleDb.OleDbConnection( "provider = Microsoft.Jet.OLEDB.4.0;

data source = SStatus.xls; Extended Properties = "" Excel 8.0; HDR = NO; IMEX = 1 "" ")

'次のメソッドは、gloabal配列excelSheetNames内のすべてのExcelシート名を取得します

GetExcelSheetNames( "SStatus.xls")

        For Each str As String In excelSheetNames
            da = New OleDbDataAdapter("select * from [" & str & "]", MyConnection)
            da.Fill(DtSet, excelSheetNames(i))
            i += 1
        Next           
        DataGridView1.DataSource = DtSet.Tables(0)          

End Sub

パブリック関数GetExcelSheetNames(ByVal excelFileName As String)

    Dim con As OleDbConnection = Nothing

    Dim dt As DataTable = Nothing

    Dim conStr As String = ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=") + excelFileName & ";Extended Properties=Excel 8.0;"

    con = New OleDbConnection(conStr)
    con.Open()
    dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
    excelSheetNames = New String(dt.Rows.Count - 1) {}
    Dim i As Integer = 0

    For Each row As DataRow In dt.Rows
        excelSheetNames(i) = row("TABLE_NAME").ToString()
        i += 1
    Next
End Function
于 2009-03-17T06:52:34.613 に答える
0

結果を DataSet に読み込みたい場合は、DataAdapter を使用することをお勧めします。

ただし、DataReader では、最初の結果セットを反復処理してから、NextResult を呼び出して 2 番目の結果セットに進みます。

于 2008-10-04T14:51:05.063 に答える
0

リーダーは、返された順序で結果セットを処理します。最初の結果セットの処理が完了したら、rdr.NextResult() を呼び出して次の結果セットを設定します

また、テーブル アダプターは入力時にすべての結果セットをデータセット内のテーブルに自動的に読み取りますが、データテーブルは型指定されず、Table1、Table2 などの名前が付けられることに注意してください。

于 2008-10-04T14:53:27.620 に答える