2012-02-14 7 views
3

私はインターネットを見渡しましたが、実際の解決策が見つかりませんか?私はIFがSQL Server CEにないことを知っているので、私は別のものを試していますが、運はありません。誰かが動作するソリューションを知っていますか?SQL Server CEにドロップテーブルが存在する場合

+0

何平野 'DROP'について、それが存在しない場合にスローされる例外を処理? –

+0

@KlausByskovHoffmann私もそれも考えていましたが、それが私の最後の手段になります。私はまずSQLを実行する可能性を捨てたいと思います。提案していただきありがとうございます! – Carlo

答えて

0

情報スキーマを照会して、テーブルにコードが存在するかどうかを確認し、コードが存在するかどうかを確認してください。

は、次のようなクエリを使用できます。

SELECT * 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME = 'YourTable' 

そして、それが存在する場合、あなたはDROP声明を発射します。

+0

全体のクエリはどのように見えますか?私は 'IF'を使うことができないので、選択後に何をしなければならないのか分かりません。 – Carlo

+0

@Carlo、申し訳ありませんが、私はあなたがC#で書かれたいくつかのコードを使ってデータベースとやりとりしていると思っていました。そうでない場合は、あなた自身が言ったように、SQLCEには「IF」はありません。私は、あなたが別のアプローチを探していると思った。 –

+0

データベースのバージョンを更新するためにSQLスクリプトを実行しようとしています。このバージョンでは、テーブルを削除する必要があります。 C#でそれをしない理由は、DBバージョンを変更するたびにDBを更新するコードを変更したくないからです。C#が実行する方法を知っているSQLスクリプトファイルを追加したいだけですDBバージョン。 – Carlo

0

SQL CEは条件付きロジック(または動的SQLまたはTRY/CATCH)を処理しないため、純粋なSQLで処理する方法がないことがわかります。すべての脳が棲んでいるSQLスクリプトのダムコントローラにするのではなく、C#プログラムにいくつかのロジックを持たなければならないかもしれません。

均等に悪いニュースといくつかの関連質問:

How can I check whether a table exists in SQL Server CE 3.5

"If not exists" fails on SQL CE

+0

また、実行するsqlを生成できる場合は、SELECT @var = 'DROP TABLE' + table_name FROM information_schema WHERE table_name = @ tablename'または何か – jcolebrand

+0

いいえ、SQL CEの動的SQLはありません。明らかに「DECLARE」と言うことさえできません。 –

+0

そして今私は知っている。 – jcolebrand

関連する問題