2016-05-12 1 views
0

異なるSQL Serverストアドプロシージャ(それぞれ1つの結果セットを返す)からデータセット内のデータセットにデータセットを埋めたいと思います。異なるSQL Serverストアドプロシージャを使用して同じデータセットをデータテーブルに埋め込む

私はSQLをテキスト「exec sp1; exec sp2」として渡すことを本当に望んでいません。これを行うにはどうすればよいですか?cmd.CommandType = CommandType.StoredProcedureメソッドを使いたいですか?

SqlDataAdapterをクリアして、再度呼び出して、sp2結果セットをロードしますか?それはテーブル(0)を拭くだろうか?私はそれが簡単なそれをキープ(1)

cnn.Open() 
cmdSQL1 = New SqlCommand 
cmdSQL1.Connection = cnn 
cmdSQL1.CommandType = CommandType.StoredProcedure 
cmdSQL1.CommandText = ("sp1") 
cmdSQL2 = New SqlCommand 
cmdSQL2.Connection = cnn 
cmdSQL2.CommandType = CommandType.StoredProcedure 
cmdSQL2.CommandText = ("sp2") 

Dim da As New SqlDataAdapter(cmdSQL1) 
da.Fill(ds) 

編集

da.Dispose() 
da.SelectCommand = cmdSQL2 
da.Fill(ds, "tab2") 

dt = ds.Tables(0) 
dt2 = ds.Tables(1) 
+0

なぜそれを試してみてください。ブレークポイントを設定し、そのコードが完了したときに 'ds'のテーブル数を調べます。 'DataAdapter.Fill()'メソッドはオーバーロードされています。 'Fill(ds、string)'を使うと、デスティネーションテーブルを作成して名前を付けることができます。 – Plutonix

+0

*表示されているコードは、sp1/cmdSQL1の1つのテーブル(テーブル(0))のみを満たしています。 2番目は決して使用されません。私は "..."はあなたが他の人にも同じことをしたと思った。 – Plutonix

+0

私は "tab2"のように名前を付けることなく、次のテーブルを埋める方法はありますか?nextresult()のようなものがありますか?または私はこれに間違った方法で近づいていますか? –

答えて

0

テーブルを埋めたいです。例を見てください。

Dim ds As New Data.DataSet() ' Dataset to fill 
Using cnn As New Data.SqlClient.SqlConnection("my connection string") 
    Dim cmd As New Data.SqlClient.SqlCommand("sp1", cnn) ' The only command 
    cmd.CommandType = Data.CommandType.StoredProcedure 
    cmd.Parameters.Add(New Data.SqlClient.SqlParameter("@id", Data.DbType.Int32)).Value = 1234 ' parameters if we need some 
    Dim dt As New Data.DataTable() 
    cnn.Open() 
    dt.Load(cmd.ExecuteReader()) ' load dt from reader. DataAdapter in fact does the same 
    ds.Tables.Add(dt) ' 0th tbl added 
    cmd.CommandText = "sp2" ' prepare 2nd SP 
    cmd.Parameters.Clear() ' no comment 
    dt = New Data.DataTable() ' recreate dt 
    dt.Load(cmd.ExecuteReader()) 
    ds.Tables.Add(dt) ' 1st tbl added 
    cnn.Close() ' clean up your place 
    cmd.Dispose() ' clean up your place 
End Using 
関連する問題