MySqlConnection Connect() 方法在数据库消失时抛出异常非常慢 C#.
本文关键字:抛出异常 非常 消失 数据库 Connect 方法 MySqlConnection | 更新日期: 2023-09-27 18:33:08
>我正在创建一个 C# 服务器,它打开命名管道并收集客户端发送给它的数据。基本上,我将收集的信息存储在mysql数据库中,使用.NET MySql Connector和MySqlConnection Class。我还添加了一个回退规则,如果数据库无法访问,它会将客户端发送的信息缓冲在 SQL 文件中,并在数据库再次可用时将其导入数据库。一切正常,除了当数据库完全消失时(例如,当运行数据库的服务器因为崩溃而不再在网络上时),Connect() 方法需要永远抛出异常。这是不可接受的,因为客户端会发送大量数据。有什么办法可以解决这个问题吗?如果查询失败是因为表不存在或类似的东西,它会立即返回错误。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using MySql.Data.MySqlClient;
namespace PipeServer
{
class MySqlConnector
{
//register logger
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public delegate void MessageReceivedHandler(string message);
public event MessageReceivedHandler MessageReceived;
private string host;
private string database;
private string user;
private string password;
private MySqlConnection connection;
private List<string> rows = new List<string>();
public MySqlConnector()
{
this.host = Settings.Default.db_host;
this.database = Settings.Default.db_schema;
this.user = Settings.Default.db_user;
this.password = Settings.Default.db_pw;
string myConnectionString = "SERVER=" + this.host + ";" +
"DATABASE=" + this.database + ";" +
"UID=" + this.user + ";" +
"PASSWORD=" + this.password + ";";
connection = new MySqlConnection(myConnectionString);
}
public bool Connect()
{
if (connection.State != System.Data.ConnectionState.Open)
{
try
{
connection.Open();
this.MessageReceived("Connected to Database");
return true;
}
catch (MySqlException ex)
{
log.Error("failed to connect! mysql error: " + ex);
this.MessageReceived("No Database connection - Error: "+ex);
return false;
}
}
else
{
this.MessageReceived("Connected to Database");
return true;
}
}
.
.
.
}
}
任何提示都非常感谢!提前感谢!
当你的意思是永远时,你的意思是 30 多岁?
您可能正在寻找将超时设置添加到连接字符串中。
http://www.connectionstrings.com/mysql