SQL Serverデータベースに情報を追加する場合は、DataSet
とDataAdapter
を使用して行う必要がありますか?DataSetの容量が多すぎますか?
私のデータベースに1,200万のエントリがある場合、1つの行だけを追加したいと考えて、DataSet
の1〜2ミルの行で私のメモリが不要になりますか?代わりがありますか?
SQL Serverデータベースに情報を追加する場合は、DataSet
とDataAdapter
を使用して行う必要がありますか?DataSetの容量が多すぎますか?
私のデータベースに1,200万のエントリがある場合、1つの行だけを追加したいと考えて、DataSet
の1〜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はすべての素朴な詳細(そして、基本的に私が上に示したコードを実行し、多かれ少なかれ実行します)。
行を挿入するだけの場合は、何もかもをDataSet
/DataAdapter
にフェッチする必要はありません。行を追加して変更を送信すると、関連するINSERTコマンドが実行されます。
データベースの最後の1000行を取得するにはどうすればよいですか? – Alex
@Badescu:それは私にとって全く別の質問のようです。 1つは、「最後」はソート順に依存します... –