【发布时间】:2014-07-22 22:35:40
【问题描述】:
connectionString = "SERVER=localhost;DATABASE=NT;UID=" + dbuser + ";PASSWORD=" + dbpass + ";";
connection = new MySqlConnection(connectionString);
OpenConnection();
//open connection to database
private bool OpenConnection()
{
try
{
connection.Open();
return true;
}
catch (MySqlException ex)
{
//The two most common error numbers when connecting are as follows:
//0: Cannot connect to server.
//1045: Invalid user name and/or password.
switch (ex.Number)
{
case 0:
Console.WriteLine(" >>>> Cannot contact MySQL Server ");//MessageBox.Show("Cannot connect to server. Contact administrator");
break;
case 1045:
Console.WriteLine(" >>>> Invalid username/password, please try again");
break;
case 1042:
Console.WriteLine(" >>>> Unable to resolve DNS");
break;
}
return false;
}
}
上面的代码成功连接到 localhost 数据库并登录,但数据库“NT”不存在(我知道)但 ex.Number 属性设置为 0 我也遇到了错误的用户名/密码组合的问题。 异常消息/文本为我提供了错误字符串,但数字字段始终设置为 0。任何帮助将不胜感激。
非常感谢, 本
编辑/更新
两个屏幕截图之间的唯一区别是我将 NT 更改为测试(NT 不存在(消息报告正确但不是数字)并且测试确实存在)
我想知道这是否可能是预期的行为?它基本上是因为该数据库不存在而拒绝连接吗?
【问题讨论】:
-
是的,我确信它正在连接到数据库,因为我得到了关于它无法找到正确数据库的内部异常,并且当我得到用户/传递错误时,消息说。如果我登录正确,那么它会连接并说数据库不存在(我故意选择不存在来测试)
-
如果在连接字符串上设置端口号怎么办? PORT="8080";
-
奇怪的是,如果我把连接字符串弄乱了说“localhost”而不是“localhost”,然后它给了我一个 1042 并显示一条消息“无法连接到任何指定的 MySQL 主机”。所以它似乎在连接时没有号码
标签: c# mysql mysql-connector