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

时间:2015-01-27 18:26:32

标签: c# mysql visual-studio-2013

我正在使用WPF MVVM Light应用程序,我希望有一个使用MYSql Query和C#的布尔方法,以Progamically方式确定数据库是否存在。任何想法都将不胜感激。

可能有类似查询的内容:

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'

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

    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;
    }

2 个答案:

答案 0 :(得分:2)

使用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;
}

答案 1 :(得分:0)

试试这个:

SHOW DATABASES LIKE 'databaseName';

如果它不存在,则返回一个空集。