これと同等の機能を実行する SQLite (C#.NET 用) の SQL コマンドはありますか?
DELETE * FROM * WHERE id='idnumber'
いいえ、ありません。
1 つの方法は、メタデータ テーブルにクエリを実行する小さなスクリプトを作成して、テーブルごとに 1 つずつ、一連の個々のdelete
ステートメントを含む別のスクリプトを作成することです。
例は次のとおりです (すべてのテーブルに ID 列があると仮定します)。
select 'delete from ' || name || ' where ID = 42'
from sqlite_master
where type = 'table'
これにより、各テーブルのステートメントが生成さdelete
れ、スクリプトとしてキャプチャして実行できます。
しかし、一般的に、データベース開発者がテーブルの名前を知っていることは良い考えです:-)
私が動的プログラムの目的で使用する方法は、テーブル名の配列を作成し、それらをループすることです。
例えば
迅速
var array = ['table1','table2','table3']
for item in array
{
var stringToDeleteTables:String = "DELETE FROM \\(item) [optional where clause]"
//run the command on the database
}
これが誰かに役立つことを願っています。サインアウトや検索データの消去などに最適です。配列を拡張して関数として呼び出すこともできます。
あなたはそれを試すことができます:
//You can do it with the following DANGEROUS commands:
PRAGMA writable_schema = 1;
delete from sqlite_master where type = 'table';
PRAGMA writable_schema = 0;
//you then want to recover the deleted space with
VACUUM
//and a good test to make sure everything is ok
PRAGMA INTEGRITY_CHECK;
お役に立てば幸いです。