6

少し前に、どのローカル DB が自分の状況に適しているかについて質問しました。.NET コードと VB6 の両方から DB にアクセスする必要がありました。圧倒的な反響は SQLite でした。しかし、SQLite を引き継ぐことにしました。唯一の OLE DB プロバイダーは、デプロイされた私のソフトウェアのコピーごとにロイヤルティを請求するからです。また、すべての PC でアクティベーション手順を実行する必要があります。

他のオプション (SQL Server Compact エディション - ほとんど機能しない OLE DB プロバイダー、Firebird - 別のドライバーにお金を払いたくないなど) を評価した後、実行可能な唯一の選択肢は を使用することであるという結論に達しました。 Microsoft Access (または Jet エンジン) によって作成された MDB ファイル。

90年代後半から使っていないので、経験者の方に質問です。

  1. データベースがときどき破損するという問題は解決しましたか。
  2. ADO.NET OLEDB Provider を介して達成される c# からの MDB へのアクセスですか、それともネイティブ ソリューションがありますか (私はそれを見つけることができないようです)。
  3. Access の本当にくだらない SQL エディターに代わる実行可能な方法はありますか?

ありがとう。

4

7 に答える 7

7

Access に「戻る」のではなく、SQLite に固執し、.NET コード内の SQLite データ アクセスには System.Data.SQLite プロバイダーを使用します。

次に、必要な SQLite データ アクセス機能をラップする VB6 で使用する単純な COM 相互運用 .NET クラスを作成します。最後に、VB6 プロジェクトから標準の COM オブジェクトのように参照して使用するだけです。

Access に関する私の知識は、おそらく少し古く、悪い経験によって偏っていますが、理にかなっていますが、Access ルートに頼る前に、他のほとんどのオプションを試してみます.

于 2009-03-25T06:24:49.620 に答える
5

(SQL Server CE とは対照的に) SQL Server 2008 Express Editionを検討しましたか?

1) 個人的には、Access DB が破損する原因のほとんどは、コード自体がクリーンアップされなかったか、ネットワーク カードに問題があることが原因であることがわかりました。

2)

string connectionString = @“Provider = Microsoft.Jet.OLEDB.4.0; " + 
                          @"Data Source = C:\data\northwind.mdb; " +
                          @"User Id = guest; Password = abc123”


using (OleDbConnection oleDbConnection = New OleDbConnection())
{
    oleDbConnection.ConnectionString = connectionString;

    oleDbConnection.Open();

    ...
}

3) SQL Server 2008 Express Edition

于 2009-03-25T06:19:18.853 に答える
4

MDB の破損は、主に、データベースが開いている間にクライアント マシン、ファイル サーバー、およびネットワークで発生する障害が原因です。MDB をファイル共有に配置する場合、これは常に危険です。ローカル ハード ドライブ上で 1 人のユーザーが使用する場合、問題は非常にまれです。

私は SQLite が少しも違うとは思っていません。

JetComp.exe (Microsoft ダウンロード) を定期的に実行すると、多くの問題が修正され、インデックス テーブルがコンパクトになります。何を使うにしても、バックアップは重要です。

Jet MDB を使用するのに MS Access はまったく必要ありません。コマンド ラインと GUI の両方で、データベース スキーマを設計し、対話型クエリを実行するためのサード パーティ製ツールがいくつかあります。

于 2009-03-25T17:40:48.543 に答える
1

また、さまざまなOSで実行され、フットプリントが小さいSQLAnywhereを試すこともできます。私のために働く:)

于 2009-03-25T06:56:47.517 に答える
1

Access の本当にくだらない SQL エディターに関するあなたの質問に答えるには、心から同意します。フォントは悪臭を放ち、MSAccess は常にクエリをひどく再フォーマットし、SQL を壊すメタ文字を追加することがあります。最後に、しかし最悪の場合、SQL を解析できない場合はアクセスできません!

私の解決策は、外部コードを使用することです。DAO を使用して MSAccess をインスタンス化し、QueryDefs コレクションを使用してクエリを直接編集できます。作成、名前変更、編集など、ほとんどのことを実行できます。ただし、この方法では実行できないことがいくつかあります。たとえば、クエリのメタデータ (説明、非表示など) へのアクセス権がありません。

外部コードも優れています。テスト ケースのスイートを構築したり、期待される戻り値を指定したりできるからです。

于 2009-07-24T14:25:32.113 に答える