gpt4 book ai didi

C# MySQL/连接器编号始终为 0

转载 作者:行者123 更新时间:2023-11-29 12:49:59 46 4
gpt4 key购买 nike

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

上面的代码成功连接到本地主机数据库并登录,但数据库“NT”不存在(我知道),但 ex.Number 属性设置为 0我也遇到了同样的问题,用户名/密码组合错误。异常消息/文本为我提供了错误的字符串,但数字字段始终设置为 0。任何帮助将不胜感激。

非常感谢,本

编辑/更新 enter image description here enter image description here

这两个屏幕截图之间的唯一区别是我将 NT 更改为测试(NT 不存在(消息正确报告但不是数字)而测试确实存在)

我想知道这是否是有意的行为?它基本上是因为该数据库不存在而拒绝连接吗?

最佳答案

我正在使用 MySql Connector .Net 6.9.4,也遇到了这个问题。我发现有一个 MySqlException 类型的 InnerException 具有错误号。你可以试试我的辅助方法:

public static int GetExceptionNumber(MySqlException my)
{
if (my != null)
{
int number = my.Number;
//if the number is zero, try to get the number of the inner exception
if (number == 0 && (my = my.InnerException as MySqlException) != null)
{
number = my.Number;
}
return number;
}
return -1;
}

问候

弗兰克

关于C# MySQL/连接器编号始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24899020/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com