您可以通过运行以下 SQL 语句来执行此操作:
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = "my_db"
如果返回的结果集中不存在它,则可以创建它。
这确实提出了有关 MySQL 权限的问题,以及您的应用程序是否应该具有启用此类检查的用户权限。
根据评论进行编辑。
目前尚不清楚您是否创建了连接字符串 - 我会假设最坏的情况,它是设置的一部分,因此您的客户可以输入它(如果您知道它,下面的过程会简化。
我会将连接字符串传递给MySqlConnectionStringBuilder
类的构造函数,这样就可以很容易地使用该类连接到数据库MySqlConnection
。我将使用MySqlConnectionStringBuilder
类的新实例(服务器、主机、用户等)中的属性来设置MySqlConnection
类。
如果连接不起作用,我会将信息返回给用户,他们可以更新他们的连接字符串。
成功连接到数据库后,我将使用实例Database
属性中的数据库名称MySqlConnectionStringBuilder
来构建上面的查询。
如果命令返回 NULL 数据库不存在,然后需要创建,如果数据库确实存在,那么命令将返回数据库的名称。
现在有两条路:
- 它不存在——它需要创建,我可能会有一个包含 create 语句的外部 SQL 文件(可以通过使用 --nodata 选项由 MySQL 转储生成)。我会解析这个文件并执行创建语句
- 它确实存在——我现在将检查数据库的结构以确保它在继续安装之前兼容。