私は名前付きパイプを開き、クライアントが送信するデータを収集するC#サーバーを作成しています。基本的には、収集された情報を.NET MySql ConnectorとMySqlConnectionクラスを使用してmysqlデータベースに格納しています。また、フォールバックルールを追加しました。これは、DBが手の届かないところにある場合、クライアントから送信された情報をSQLファイルにバッファリングし、再び使用可能になった時点でDBにインポートします。 DBが完全になくなった場合(たとえば、DBを実行しているサーバーがクラッシュしたためにネットワークに接続されていないなど)を除いて、Connect()メソッドは例外をスローします。クライアントが多くのデータを送信するため、これは容認できません。これを修正する方法はありますか?テーブルが存在しないなどの理由でクエリが失敗した場合は、すぐにエラーが返されます。MySqlConnection Connect()メソッドは、DBがなくなったときに例外をスローするのが非常に遅いC#
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;
}
}
.
.
.
}
}
いずれのヒントも高く評価されています。ありがとうございます!
おかげで、あなたは男です!:) – user871784
あなたは非常にウェルカムだ:) – ykatchou