2
SQL CEを使用してアプリケーションにデータを格納しています。私は周りに3000回のためにそれを実行した後、以下のコードでエラーが発生しました:.NET SQL CEコア - この操作を完了するのに十分なストレージがありません
エラーがLIVEアプリケーション上で起こっている「足りない記憶域がこの操作を完了するのに利用可能です」。
SqlCeConnection connection;
SqlCeTransaction transaction;
try
{
connection = new SqlCeConnection(connectionString);
connection.Open();
transaction = connection.BeginTransaction();
SqlCeCommand deleteCmd = connection.CreateCommand();
deleteCmd.CommandText ="Delete from EJData where [email protected]";
deleteCmd.Parameters.Add("@id", SqlDbType.Int, Int32.MaxValue.ToString().Length, "ID");
adapter.DeleteCommand = deleteCmd;
adapter.DeleteCommand.Transaction = transaction;
DataRow[] r = dataSet.Tables[0].Select("ID >=" + firstRecordID + " and ID<=" + lastRecordID);
foreach (DataRow row in r)
{
row.Delete();
}
adapter.Update(dataSet,"EJData");
transaction.Commit(CommitMode.Immediate);
transaction.Dispose();
transaction = null;
}
catch (...)
{
...
}
finally
{
if (adapter.DeleteCommand != null)
{
adapter.DeleteCommand.Dispose();
}
connection.Close();
}
3000回 - このメソッドを3000回呼び出しますか?または、ループ内に3000個のアイテムを含む1つのコール?私は、トランザクションが単純に大きすぎると思っています。そして、より小さなトランザクションが成功するかもしれません。 –
GC.Collect();を追加してみてください。 connection.Closeの後に(); – Dementic