초기커밋
This commit is contained in:
97
ServerBase/Helper/MySqlConnectorHelper.cs
Normal file
97
ServerBase/Helper/MySqlConnectorHelper.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
using MySqlConnector;
|
||||
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
|
||||
|
||||
namespace ServerBase;
|
||||
|
||||
//=============================================================================================
|
||||
// MySqlConnector 관련 각종 지원 함수
|
||||
//
|
||||
// author : kangms
|
||||
//
|
||||
//=============================================================================================
|
||||
public static class MySqlConnectorHelper
|
||||
{
|
||||
public static async Task<Result> simpleTryConnectToDb(string connectionString)
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
using (var db_connector = new MySqlDbConnector())
|
||||
{
|
||||
var error_cdoe = await db_connector.initMySql(connectionString);
|
||||
if (error_cdoe.isFail())
|
||||
{
|
||||
err_msg = $"Failed to initMySql() !!! : errCode:{error_cdoe} - connectString:{connectionString}";
|
||||
result.setFail(error_cdoe, err_msg);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async Task<Result> simpleQueryExecuteForReaderAsync( string queryString, Func<MySqlDataReader, ServerErrorCode> readFunc
|
||||
, string connectionString
|
||||
, Int16 queryTimeoutSec = 15
|
||||
, Int16 retryIntervalMSec = 1000, Int16 retryCount = 3 )
|
||||
{
|
||||
var result = new Result();
|
||||
var err_msg = string.Empty;
|
||||
|
||||
using ( var db_connector = new MySqlDbConnector() )
|
||||
{
|
||||
for(var i = 0; i <= retryCount; i++)
|
||||
{
|
||||
var error_cdoe = await db_connector.initMySql(connectionString);
|
||||
if (error_cdoe.isSuccess())
|
||||
{
|
||||
error_cdoe = await db_connector.querySQL(queryString, readFunc);
|
||||
if(error_cdoe.isSuccess())
|
||||
{
|
||||
// 성공하면 즉시 반환 한다 !!!
|
||||
result.setSuccess();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
// Db와 연결이 끊어진 경우는 재시도 설정에 따라 추가 처리 한다.
|
||||
if (ConnectionState.Closed == db_connector.getLastConnectionState())
|
||||
{
|
||||
err_msg = $"Failed to retry Open MySql !!! : errCode:{error_cdoe}";
|
||||
result.setFail(error_cdoe, err_msg);
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
await Task.Delay(retryIntervalMSec);
|
||||
|
||||
err_msg = $"Retry Query !!! : retriedCount:{i}, queryString:{queryString} - retryableCount:{retryCount}";
|
||||
Log.getLogger().error(err_msg);
|
||||
}
|
||||
}
|
||||
// 기타 오류 발생시 실패로 처리 한다.
|
||||
else
|
||||
{
|
||||
err_msg = $"Failed to simpleQueryExecuteForReaderAsync() !!! : errCode:{error_cdoe}, queryString:{queryString} - retryCount:{retryCount}";
|
||||
Log.getLogger().error(err_msg);
|
||||
result.setFail(error_cdoe, err_msg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user