C# 在visualstudio中用C实现MYSql。如果数据库存在,如何返回布尔值
我正在开发一个WPF MVVM Light应用程序,我希望有一个使用MYSql查询和C编程确定数据库是否存在的布尔方法。任何想法都将不胜感激 可能是带有如下查询的内容:C# 在visualstudio中用C实现MYSql。如果数据库存在,如何返回布尔值,c#,mysql,visual-studio-2013,C#,Mysql,Visual Studio 2013,我正在开发一个WPF MVVM Light应用程序,我希望有一个使用MYSql查询和C编程确定数据库是否存在的布尔方法。任何想法都将不胜感激 可能是带有如下查询的内容: SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'Mark'), 'Yes','No') 或: 我有一些方法可以查询数据库,但我希望有一个校验和来确定数据库是否存在。如果我使用下面的代码,它将出
SELECT IF(EXISTS (SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'Mark'), 'Yes','No')
或:
我有一些方法可以查询数据库,但我希望有一个校验和来确定数据库是否存在。如果我使用下面的代码,它将出错,因此我想首先确定数据库是否存在以及它是否查询它
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';
如果不存在,则返回一个空集。使用信息模式作为数据库,使用show数据库
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;
}
您是否尝试在不选择数据库的情况下连接到服务器并运行查询显示数据库;为什么呢如果我执行Myconnection。打开它将出错。请使用信息\u架构作为数据库。如果show数据库不起作用,请尝试从信息中选择SCHEMA\u NAME\u SCHEMA.schemata如果您对连接使用using语句,它将创建一个finally语句,并使用MySqlConnection myConnection=new MySqlConnectionconnStr为您关闭连接{看我的答案。它对我有用。它只列出你可以访问的数据库。这是我想做的,但我不想抛出错误。使用try-catch作为条件语句是不好的做法。这样做了。我真的很感激。好东西!
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;
}