6

ms-sqlデータベースの挿入ステートメントを実行するのにどちらが良いでしょうか。

SQL DataAdapterまたはSQLコマンドオブジェクト?

それらのどれが、その間inserting only one row、そしてその間、より良いでしょうinserting multiple rowsか?

コード使用法の簡単な例:

SQLコマンド

string query = "insert into Table1(col1,col2,col3) values (@value1,@value2,@value3)";
int i;

SqlCommand cmd = new SqlCommand(query, connection);
// add parameters...
cmd.Parameters.Add("@value1",SqlDbType.VarChar).Value=txtBox1.Text;
cmd.Parameters.Add("@value2",SqlDbType.VarChar).Value=txtBox2.Text;
cmd.Parameters.Add("@value3",SqlDbType.VarChar).Value=txtBox3.Text;
cmd.con.open();
i = cmd.ExecuteNonQuery();
cmd.con.close();

SQLデータアダプタ

DataRow dr = dsTab.Tables["Table1"].NewRow();
DataSet dsTab = new DataSet("Table1");
SqlDataAdapter adp = new SqlDataAdapter("Select * from Table1", connection);
adp.Fill(dsTab, "Table1");
dr["col1"] = txtBox1.Text;
dr["col2"] = txtBox5.Text;    
dr["col3"] = "text";

dsTab.Tables["Table1"].Rows.Add(dr);

SqlCommandBuilder projectBuilder = new SqlCommandBuilder(adp);
DataSet newSet = dsTab.GetChanges(DataRowState.Added);
adp.Update(newSet, "Table1");
4

3 に答える 3

3

DataAdaptersを使用すると、データソースの更新がはるかに簡単になります。DataSetを変更してUpdateを呼び出すだけなので、変更を加えるのは簡単です。

DataAdaptersとコマンドの使用のパフォーマンスにおそらく違いはありません(またはほとんどありません)。DataAdaptersは、内部でConnectionオブジェクトとCommandオブジェクトを使用し、コマンドを実行して、指示されたアクション(FillやUpdateなど)を実行するため、Commandオブジェクトのみを使用する場合とほとんど同じです。

于 2011-07-04T08:42:53.417 に答える
2

単一の挿入とほとんどのデータベースCRUDリクエストには、DataSetでLinqToSqlを使用します。これはタイプセーフであり、上記のようなコンパイルされていないクエリに対しては比較的高速です。

挿入する行が多く(1000以上)、SQL Server 2008を使用している場合は、SqlBulkCopyを使用します。DataSetを使用してストアドプロシージャに入力し、宛先にマージできます

複雑なクエリの場合は、dapperをストアドプロシージャと組み合わせて使用​​することをお勧めします。

于 2011-07-04T08:40:01.190 に答える
1

データベースとの通信を何らかの方法で制御することをお勧めします。これは、いくつかのコードを抽象化することを意味し、そのためにCommandBuilderは自動的にCUDステートメントを生成します。

その手法を型付きデータセットと一緒に使用すると、さらに良いでしょう。次に、すべての列でインテリセンスとコンパイル時のチェックを行います

于 2011-07-04T08:31:52.083 に答える