2010-12-02 3 views
0

SQL Serverデータベースに情報を追加する場合は、DataSetDataAdapterを使用して行う必要がありますか?DataSetの容量が多すぎますか?

私のデータベースに1,200万のエントリがある場合、1つの行だけを追加したいと考えて、DataSetの1〜2ミルの行で私のメモリが不要になりますか?代わりがありますか?

答えて

2

単純なSQL INSERTステートメントを保持していて、パラメータを指定してデータをロードすると、普通の古いADO.NETをいつでも作成できます(何もロードする必要はありません。 - それだけでうまくいくでしょう):

string insertStmt = "INSERT INTO dbo.YourTable(col1, col2, ...., colN) " + 
    "VALUES(@Value1, @Value2, ...., @ValueN)"; 

using(SqlConnection _con = new SqlConnection(-your-connection-string-here)) 
using(SqlCommand _cmdInsert = new SqlCommand(insertStmt, _con))  
{ 
    // define the parameters for your query 
    _cmdInsert.Parameters.Add("@Value1", SqlDbType.Int); 
    ....... 

    // set the values 
    _cmdInsert.Parameters["@Value1"].Value = 4711; 
    ..... 

    _con.Open(); 
    int rowsInserted = _cmdInsert.ExecuteNonQuery(); 
    _con.Close(); 
} 

挿入する行が複数ある場合、たとえばオブジェクトのリストを作成し、オブジェクトごとに_cmdInsertの値を設定し、各行に_cmdInsert.ExecuteNonQuery()を実行します。

もちろん、ORM(NHibernate、Linq-to-SQL、Entity Framework)のようなものを使用すると、その作業は無限に簡単になります - 新しいオブジェクトをコレクションに挿入して保存する - ORMはすべての素朴な詳細(そして、基本的に私が上に示したコードを実行し、多かれ少なかれ実行します)。

7

行を挿入するだけの場合は、何もかもDataSet/DataAdapterにフェッチする必要はありません。行を追加して変更を送信すると、関連するINSERTコマンドが実行されます。

+0

データベースの最後の1000行を取得するにはどうすればよいですか? – Alex

+3

@Badescu:それは私にとって全く別の質問のようです。 1つは、「最後」はソート順に依存します... –

関連する問題