我正在使用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;
}
答案 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';
如果它不存在,则返回一个空集。