0

esent にデータベースが存在するかどうかを確認するにはどうすればよいですか?

と を使用Api.JetAttachDatabaseApi.JetOpenDatabaseて既存のデータベースを開き、 を使用Api.JetCreateDatabaseして新しいデータベースを作成できます。しかし、DB が存在するかどうかを確認できる API が見つかりません。

Api.JetAttachDatabaseデータベースが存在するかどうかを検出するために、本当に例外をキャッチする必要がありますか?

4

2 に答える 2

1

私は休暇中で、ソース コードが手元にないため、詳細が不足していることをお詫びします。:)これは私の頭の上から外れています。

o Api.JetAttachDatabase は、JetApi.JetAttachDatabase を呼び出します。

o JetApi.JetAttachDatabase はエラー コードを返します (これが必要です!)。

o Api.JetAttachDatabase はそれを例外に変換します。

最大の問題は、JetApi.Xxx が公開されていない可能性があることです。内部専用の場合があります。公開しない理由があれば原作者に聞いてみたい。ない場合は、ManagedEsent の将来のリリースで変更できます。

不確かな回答で申し訳ありません。

File.Exists() のような CLR 関数はどうでしょうか。

-マーティン

于 2013-06-12T02:22:58.843 に答える
0

例外をキャッチする必要はありません。戻り値の型は、問題があるかどうかを知らせる JET_ERR 型を返します。単純なブール チェックを探している場合は、運が悪いか、そうしなければならない可能性があると思います。自分で書いてください。

ソース :

http://msdn.microsoft.com/en-us/library/gg294074.aspx

http://msdn.microsoft.com/en-us/library/gg294092.aspx

const JET_errSuccess = 0;

result = JetCreateDatabase(...);

if(result != JET_errSuccess)
{
  //throw error
}
于 2013-06-11T13:28:39.533 に答える