0

アプリケーションをデプロイしようとしていますが、少し問題が発生しました。

application.settings に保持されているデータベースの接続文字列があり、プログラムの最初の起動時にデータベースが存在するかどうかを確認する方法が必要です。存在しない場合は、プログラムを起動する前にプログラムを作成する必要があります。

作成されていない場合は、db が存在するかどうかを確認するのは mysql ステートメントであると想定しています。ただし、これを行う場所や方法がわかりません。テーブルなどが既に作成されている空のデータベースの mysql ダンプを作成して使用できますか?

私はすでにmysql dllファイルをローカルに保存しているので、問題はありません。アプリケーションを実行する前に文字列が接続するデータベースを作成するだけなので、すぐに接続エラーは発生しません。

ありがとう。

4

1 に答える 1

0

これを行うには、次の SQL ステートメントを実行します。

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = "my_db"

返された結果セットに存在しない場合は、作成できます。

これにより、MySQL のアクセス許可に関する疑問が生じます。また、アプリケーションにそのようなチェックを有効にするユーザー権限が必要かどうかについても疑問が生じます。

コメントに応じて編集します。

接続文字列を作成するかどうかは明確ではありません。最悪の場合を想定し、クライアントが入力できるようにセットアップの一部であると想定します (わかっている場合は、以下のプロセスが簡素化されます.

接続文字列をクラスのコンストラクターに渡すと、MySqlConnectionStringBuilderクラスを使用してデータベースに簡単に接続できるようになりますMySqlConnectionMySqlConnectionStringBuilderクラスの新しいインスタンス (サーバー、ホスト、ユーザーなど)のプロパティを使用して、MySqlConnectionクラスをセットアップします。

接続が機能しない場合は、ユーザーに情報を返し、ユーザーは接続文字列を更新できます。

Databaseデータベースに正常に接続したら、インスタンスのプロパティのデータベース名を使用してMySqlConnectionStringBuilder上記のクエリを作成します。

コマンドが NULL を返す場合、データベースは存在しないため作成する必要があります。データベースが存在する場合、コマンドはデータベースの名前を返します。

現在、次の 2 つのパスがあります。

  1. 存在しません– 作成する必要があります。おそらく、create ステートメントを含む外部 SQL ファイルがあります (–nodata オプションを使用して MySQL ダンプによって生成できます)。このファイルを解析し、create ステートメントを実行します。
  2. 存在します。インストールを続行する前に、データベースの構造をチェックして互換性があることを確認します。
于 2013-03-12T13:27:29.097 に答える