10

かなり簡単な質問です。SQL Server 2005 インスタンスからデータを読み取るアプリを構築しています。ラップトップ (SQL 2005 を搭載していない) でいくつかのテストを実行したかったので、テストのためにローカル データベースでのスワップを検討していました。

私は VS2008 を使用しているので、Compact Edition DB は自然な選択に思えました。接続文字列を交換することだけを望んでいましたが、SqlConnection ではなく SqlCeConnection を使用して CE データベースにのみ接続できるようです。これを回避する方法はありますか?接続文字列で使用できる修飾子はありますか?

4

3 に答える 3

8

構成パラメーターを変更するだけで、本格的な SQL Server の代わりに SQL CE を使用することが実際には非常に可能です。接続文字列を変更し、プラットフォーム固有のものIDbXXXではなく、可能な限りファミリ インターフェイスを使用します。DbProviderFactoryを参照してください。SqlXXXSqlCeXXX

ただし、これら 2 つのプラットフォームの SQL ダイアレクトの違いに注意してください。

于 2009-04-27T11:37:39.703 に答える
6

はい、代わりに基本クラスを参照することで、SQLCompactやSQLServerを使用できます。例えば:

IDbConnection Connection;

if (Compact)
    Connection = new SqlCeConnection();
else
    Connection = new SqlConnection();

接続文字列は、SQL Compactのデータファイルを指す必要があります。例:"Data Source=urData.sdf;Persist Security Info=False;"。ここに他の例があります

このリンクでは、SQLServerとSQLCompactの違いについて説明します。これは、同一ではないためです。

于 2012-12-04T14:41:48.530 に答える
2

いずれかの DB に必要なすべての SQL 関連オブジェクトは、基本抽象 Db から継承します... (つまり、DbConnection、DbDataAdapter など...)。したがって、インスタンス化されたときに、Sql または Sql Ce のどちらを扱っているかを知る必要がある、ある種の DatabaseManager クラスを作成できます。それ以降は、基本クラス オブジェクト (DbConnection など) だけを扱います。そうすれば、毎回変更する必要があるのは、マネージャー クラスのインスタンス化だけです。

このようにすることのもう 1 つの利点は、後で別のプロバイダーに完全に切り替えることにした場合に、コードをあまり変更する必要がないことです。

于 2009-04-27T11:47:45.827 に答える