2016-08-05 2 views
0

私は非常に次のコードと混同しています。これはexecutenonquery()、runscalar()またはadapter.insertのメソッドではなくても、ストアドプロシージャに挿入されたテーブルにデータを挿入しています... それは可能ですかSqlDataAdapterを使用してデータを挿入する

public DataSet GetDataSet(string spName, System.Collections.Hashtable hst) 
{ 
    cmd.CommandTimeout = 220; 
    con = new SqlConnection(); 
    cmd = new SqlCommand(); 
    con.ConnectionString = constr; 
    cmd.Connection = con; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = spName; 
    con.Open(); 
    if (hst != null) 
     if (hst.Count > 0) 
      AttachParameters(cmd, hst); 
    DataSet dataset = new DataSet(); 
    SqlDataAdapter adapter = new SqlDataAdapter(); 
    adapter.SelectCommand = cmd; 
    adapter.Fill(dataset); 
    con.Close(); 
    return dataset; 

} 
+0

のような結果を取得するために内部的に実行されるよう、アダプタを使用する必要はありません。コマンドで定義されたストアドプロシージャを実行し、データセット(データテーブル)に埋め込みます – gsharp

+0

ストアドプロシージャで@Action変数を作成しないのはどうでしょうか?実行する必要があるaction = "Insert/etc"対応するコードが実行されます。 – Abhishek

答えて

0

は、この方法では、ちょうどuが望んでいたデータを取得し、この部分はuが出て取り込むデータを使用してデータセットを埋めるために使用されるデータセット adapter.Fill(dataset);にそれを保存します。これは技術的にあなたのストアドプロシージャは、挿入を行っているので、あなたのストアドプロシージャに渡すよう

あなたのストアドプロシージャをthis.Inないストアドプロシージャは、データベースのストアドプロシージャフォルダUにある場合はuが挿入文

を持つべきですそれは

何かfillメソッドは、内部的にすることを行い、この

INSERT INTO msdb.dbo.db(db) VALUES (@dbdata)

関連する問題