0

我即将部署我的应用程序并遇到了一些麻烦。

我在 application.settings 中保存了数据库的连接字符串,需要一种方法来检查程序第一次启动时数据库是否存在,如果不存在,我需要程序在启动程序之前创建它。

我假设这将是一个 mysql 语句来检查 db 是否存在,如果不存在则创建。但是,我不知道在哪里或如何做到这一点,我可以创建一个空白数据库的 mysql 转储,其中已经创建了表等并使用它吗?

我已经在本地存储了 mysql dll 文件,所以没有问题,它只是在应用程序运行之前创建字符串想要连接的数据库,因此不会立即出现连接错误。

谢谢。

4

1 回答 1

0

您可以通过运行以下 SQL 语句来执行此操作:

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

如果返回的结果集中不存在它,则可以创建它。

这确实提出了有关 MySQL 权限的问题,以及您的应用程序是否应该具有启用此类检查的用户权限。

根据评论进行编辑。

目前尚不清楚您是否创建了连接字符串 - 我会假设最坏的情况,它是设置的一部分,因此您的客户可以输入它(如果您知道它,下面的过程会简化。

我会将连接字符串传递给MySqlConnectionStringBuilder类的构造函数,这样就可以很容易地使用该类连接到数据库MySqlConnection。我将使用MySqlConnectionStringBuilder类的新实例(服务器、主机、用户等)中的属性来设置MySqlConnection类。

如果连接不起作用,我会将信息返回给用户,他们可以更新他们的连接字符串。

成功连接到数据库后,我将使用实例Database属性中的数据库名称MySqlConnectionStringBuilder来构建上面的查询。

如果命令返回 NULL 数据库不存在,然后需要创建,如果数据库确实存在,那么命令将返回数据库的名称。

现在有两条路:

  1. 它不存在——它需要创建,我可能会有一个包含 create 语句的外部 SQL 文件(可以通过使用 --nodata 选项由 MySQL 转储生成)。我会解析这个文件并执行创建语句
  2. 它确实存在——我现在将检查数据库的结构以确保它在继续安装之前兼容。
于 2013-03-12T13:27:29.097 回答