MYSql 在 Visual Studio 中使用 C#。如果数据库存在,如何 return 布尔值

MYSql with C# in Visual Studio. How to return a boolean if a database exists

我正在开发一个 WPF MVVM Light 应用程序,我想要一个布尔方法,它使用 MYSql 查询和 C# 以编程方式确定数据库是否存在。任何想法将不胜感激。

可能有这样的查询:

SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'Mark'), 'Yes','No') 

或:

SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName'

我有查询数据库的方法,但我想要一个校验和来确定数据库是否存在。如果我使用下面的代码,它会出错,所以我想首先确定数据库是否存在以及它是否查询它。

    static public Project.Project QueryProject(string projDatabaseName)
    {
        Project.Project proj = new Project.Project();
        string connStr = "server=localhost;database=" + projDatabaseName + ";user=******;port=3306;password=********;";
        string queryStr = "SELECT * FROM " + projDatabaseName + ".project";
        MySqlConnection myConnection = new MySqlConnection(connStr);
        MySqlCommand myCommand = new MySqlCommand(queryStr, myConnection);
        myConnection.Open();

        try
        {
            MySqlDataReader myReader = myCommand.ExecuteReader();
            while (myReader.Read())
            {
                proj.ProjectID = int.Parse(myReader["ProjectID"].ToString());
                proj.ProjectName = myReader["ProjectName"].ToString();
                proj.ProjectStartDate = Convert.ToDateTime(myReader["ProjectStartDate"]);
                proj.ProjectEndDate = Convert.ToDateTime(myReader["ProjectEndDate"]);
                proj.ProjectNotes = myReader["ProjectNotes"].ToString();
            }
            myReader.Close();

        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            return null;
        }
        finally
        {
            myConnection.Close();
        }
        return proj;
    }

试试这个:

SHOW DATABASES LIKE 'databaseName';

它 returns 如果不存在则为空集。

使用 INFORMATION_SCHEMA 作为数据库使用 show databases。

public bool DatabaseExists(string dbname)
{
string connStr = "server=localhost;database=INFORMATION_SCHEMA;";

using (MySqlConnection myConnection = new MySqlConnection(connStr))
{
 string sql = "show databases";
 MySqlCommand myCommand = new MySqlCommand(sql, myConnection);
 myConnection.Open();
 MySqlDataReader myReader = myCommand.ExecuteReader();
 while (myReader.Read())
 {
   string db =  myReader["Database"].ToString();
   if (db == dbname)
     return true;
 }
}
return false;
}