[성현모] Middleware.Log 누락 추가
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -400,4 +400,5 @@ FodyWeavers.xsd
|
||||
|
||||
#======================Custom
|
||||
.svn
|
||||
!SystemX.Net.CP.Middleware.Log
|
||||
!SystemX.Net.CP.Middleware.Log
|
||||
!SystemX.Net.DB.Log
|
||||
@ -0,0 +1,308 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
|
||||
using SystemX.Common;
|
||||
using SystemX.Common.Serialization;
|
||||
using static SystemX.Net.DB.LogProcess.XLogDBConnManager;
|
||||
|
||||
namespace SystemX.Net.DB.LogProcess
|
||||
{
|
||||
public class CMainConnInfo
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string IP { get; set; }
|
||||
public string Port { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string PW { get; set; }
|
||||
public string SCHEMA { get; set; }
|
||||
public string SUMMARY_TABLE { get; set; }
|
||||
public string VERSION_TABLE { get; set; }
|
||||
public string VRFY_TABLE { get; set; }
|
||||
public string MAC_ADDR { get; set; }
|
||||
public string SSPI { get; set; }
|
||||
|
||||
public CMainConnInfo()
|
||||
{
|
||||
Type = string.Empty;
|
||||
IP = string.Empty;
|
||||
Port = string.Empty;
|
||||
ID = string.Empty;
|
||||
PW = string.Empty;
|
||||
SCHEMA = string.Empty;
|
||||
MAC_ADDR = string.Empty;
|
||||
SSPI = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public class CShortTermConnInfo
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string IP { get; set; }
|
||||
public string Port { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string PW { get; set; }
|
||||
public string SCHEMA { get; set; }
|
||||
//public string KEY_TABLE { get; set; }
|
||||
public string SUMMARY_TABLE { get; set; }
|
||||
public string LOG_TABLE { get; set; }
|
||||
public string MAC_ADDR { get; set; }
|
||||
public string SSPI { get; set; }
|
||||
|
||||
public CShortTermConnInfo()
|
||||
{
|
||||
Type = string.Empty;
|
||||
IP = string.Empty;
|
||||
Port = string.Empty;
|
||||
ID = string.Empty;
|
||||
PW = string.Empty;
|
||||
SCHEMA = string.Empty;
|
||||
MAC_ADDR = string.Empty;
|
||||
SSPI = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class CLongTermConnInfo
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string IP { get; set; }
|
||||
public string Port { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string PW { get; set; }
|
||||
public string SCHEMA { get; set; }
|
||||
//public string KEY_TABLE { get; set; }
|
||||
public string SUMMARY_TABLE { get; set; }
|
||||
public string LOG_TABLE { get; set; }
|
||||
public string MAC_ADDR { get; set; }
|
||||
public string SSPI { get; set; }
|
||||
|
||||
public CLongTermConnInfo()
|
||||
{
|
||||
Type = string.Empty;
|
||||
IP = string.Empty;
|
||||
Port = string.Empty;
|
||||
ID = string.Empty;
|
||||
PW = string.Empty;
|
||||
SCHEMA = string.Empty;
|
||||
MAC_ADDR = string.Empty;
|
||||
SSPI = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public class XDBConnInfo
|
||||
{
|
||||
public enum INFO_STRUCTURE
|
||||
{
|
||||
DBConnInfo,
|
||||
IP,
|
||||
Port,
|
||||
ID,
|
||||
PW,
|
||||
DB_CONN,
|
||||
MAC_ADDR,
|
||||
SSPI
|
||||
}
|
||||
|
||||
public enum eVersion
|
||||
{
|
||||
CPX,
|
||||
CPXV2
|
||||
}
|
||||
|
||||
public eVersion ConnVersion;
|
||||
|
||||
public CMainConnInfo ConnMain;
|
||||
|
||||
public CShortTermConnInfo ConnShortTerm;
|
||||
|
||||
public CLongTermConnInfo ConnLongTerm;
|
||||
|
||||
|
||||
public XDBConnInfo()
|
||||
{
|
||||
ConnVersion = eVersion.CPX;
|
||||
|
||||
ConnMain = new CMainConnInfo();
|
||||
ConnShortTerm = new CShortTermConnInfo();
|
||||
ConnLongTerm = new CLongTermConnInfo();
|
||||
}
|
||||
|
||||
public bool ReadConfig(string strPath)
|
||||
{
|
||||
try
|
||||
{
|
||||
FileStream fs = new FileStream(strPath, FileMode.Open, FileAccess.Read);
|
||||
|
||||
XmlDocument xmldoc = new XmlDocument();
|
||||
XmlNodeList nodeList;
|
||||
|
||||
Type InfoType = typeof(XDBConnInfo);
|
||||
|
||||
xmldoc.Load(fs);
|
||||
|
||||
nodeList = xmldoc.GetElementsByTagName(INFO_STRUCTURE.DBConnInfo.ToString());
|
||||
|
||||
XmlNode topNode = nodeList.Item(0);
|
||||
|
||||
foreach (XmlNode node in topNode.ChildNodes)
|
||||
{
|
||||
string strNodeName = node.Name;
|
||||
|
||||
if (strNodeName.CompareTo("UseVersion") == 0)
|
||||
{
|
||||
if (Enum.TryParse<eVersion>(node.InnerText, out ConnVersion) == false)
|
||||
ConnVersion = eVersion.CPX;
|
||||
}
|
||||
|
||||
if (strNodeName.CompareTo("MainConnInfo") == 0)
|
||||
{
|
||||
if (node.HasChildNodes == false)
|
||||
throw new Exception("[MainConnInfo] Has no entries.");
|
||||
if (node.ChildNodes.Count != 11)
|
||||
throw new Exception("[MainConnInfo] Entries do not match.");
|
||||
|
||||
ConnMain.Type = node.ChildNodes[0].InnerText;
|
||||
ConnMain.IP = node.ChildNodes[1].InnerText;
|
||||
ConnMain.Port = node.ChildNodes[2].InnerText;
|
||||
ConnMain.ID = node.ChildNodes[3].InnerText;
|
||||
ConnMain.PW = node.ChildNodes[4].InnerText;
|
||||
ConnMain.SCHEMA = node.ChildNodes[5].InnerText;
|
||||
ConnMain.SUMMARY_TABLE = node.ChildNodes[6].InnerText;
|
||||
ConnMain.VERSION_TABLE = node.ChildNodes[7].InnerText;
|
||||
ConnMain.VRFY_TABLE = node.ChildNodes[8].InnerText;
|
||||
ConnMain.MAC_ADDR = node.ChildNodes[9].InnerText;
|
||||
ConnMain.SSPI = node.ChildNodes[10].InnerText;
|
||||
}
|
||||
else if (strNodeName.CompareTo("ShortTermInfo") == 0)
|
||||
{
|
||||
if (node.HasChildNodes == false)
|
||||
throw new Exception("[ShortTermInfo] Has no entries.");
|
||||
if (node.ChildNodes.Count != 10)
|
||||
throw new Exception("[ShortTermInfo] Entries do not match.");
|
||||
|
||||
ConnShortTerm.Type = node.ChildNodes[0].InnerText;
|
||||
ConnShortTerm.IP = node.ChildNodes[1].InnerText;
|
||||
ConnShortTerm.Port = node.ChildNodes[2].InnerText;
|
||||
ConnShortTerm.ID = node.ChildNodes[3].InnerText;
|
||||
ConnShortTerm.PW = node.ChildNodes[4].InnerText;
|
||||
ConnShortTerm.SCHEMA = node.ChildNodes[5].InnerText;
|
||||
//ConnShortTerm.KEY_TABLE = node.ChildNodes[6].InnerText;
|
||||
ConnShortTerm.SUMMARY_TABLE = node.ChildNodes[6].InnerText;
|
||||
ConnShortTerm.LOG_TABLE = node.ChildNodes[7].InnerText;
|
||||
ConnShortTerm.MAC_ADDR = node.ChildNodes[8].InnerText;
|
||||
ConnShortTerm.SSPI = node.ChildNodes[9].InnerText;
|
||||
}
|
||||
else if(strNodeName.CompareTo("LongTermInfo") == 0)
|
||||
{
|
||||
if (node.HasChildNodes == false)
|
||||
throw new Exception("[LongTermInfo] Has no entries.");
|
||||
if (node.ChildNodes.Count != 10)
|
||||
throw new Exception("[LongTermInfo] Entries do not match.");
|
||||
|
||||
ConnLongTerm.Type = node.ChildNodes[0].InnerText;
|
||||
ConnLongTerm.IP = node.ChildNodes[1].InnerText;
|
||||
ConnLongTerm.Port = node.ChildNodes[2].InnerText;
|
||||
ConnLongTerm.ID = node.ChildNodes[3].InnerText;
|
||||
ConnLongTerm.PW = node.ChildNodes[4].InnerText;
|
||||
ConnLongTerm.SCHEMA = node.ChildNodes[5].InnerText;
|
||||
//ConnLongTerm.KEY_TABLE = node.ChildNodes[6].InnerText;
|
||||
ConnLongTerm.SUMMARY_TABLE = node.ChildNodes[6].InnerText;
|
||||
ConnLongTerm.LOG_TABLE = node.ChildNodes[7].InnerText;
|
||||
ConnLongTerm.MAC_ADDR = node.ChildNodes[8].InnerText;
|
||||
ConnLongTerm.SSPI = node.ChildNodes[9].InnerText;
|
||||
}
|
||||
|
||||
/*
|
||||
else
|
||||
{
|
||||
PropertyInfo propFound = InfoType.GetProperty(strNodeName);
|
||||
|
||||
if (propFound != null)
|
||||
propFound.SetValue(this, node.InnerText);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
fs.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"DB Connection Info. Reading Error : {ex.Message}");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public string GetConnectionStatement(eDbType eType, eConnCategory eConn)
|
||||
{
|
||||
string strStatement = string.Empty;
|
||||
|
||||
bool bSSPI = true;
|
||||
|
||||
string IP_ADDRESS = string.Empty;
|
||||
string PORT_NUMBER = string.Empty;
|
||||
string CONN_SCHEMA = string.Empty;
|
||||
string IDENTIFIER = string.Empty;
|
||||
string PASSWORD = string.Empty;
|
||||
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
{
|
||||
if (ConnMain.SSPI.IndexOf("False") >= 0) bSSPI = false;
|
||||
|
||||
IP_ADDRESS = ConnMain.IP;
|
||||
PORT_NUMBER = ConnMain.Port;
|
||||
CONN_SCHEMA = ConnMain.SCHEMA;
|
||||
IDENTIFIER = ConnMain.ID;
|
||||
PASSWORD = ConnMain.PW;
|
||||
}
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
{
|
||||
if (ConnShortTerm.SSPI.IndexOf("False") >= 0) bSSPI = false;
|
||||
|
||||
IP_ADDRESS = ConnShortTerm.IP;
|
||||
PORT_NUMBER = ConnShortTerm.Port;
|
||||
CONN_SCHEMA = ConnShortTerm.SCHEMA;
|
||||
IDENTIFIER = ConnShortTerm.ID;
|
||||
PASSWORD = ConnShortTerm.PW;
|
||||
}
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
{
|
||||
if (ConnLongTerm.SSPI.IndexOf("False") >= 0) bSSPI = false;
|
||||
|
||||
IP_ADDRESS = ConnLongTerm.IP;
|
||||
PORT_NUMBER = ConnLongTerm.Port;
|
||||
CONN_SCHEMA = ConnLongTerm.SCHEMA;
|
||||
IDENTIFIER = ConnLongTerm.ID;
|
||||
PASSWORD = ConnLongTerm.PW;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (eType)
|
||||
{
|
||||
case eDbType.MS_SQL:
|
||||
if (bSSPI == false)
|
||||
strStatement = $"Data Source = {IP_ADDRESS},{PORT_NUMBER}; Initial Catalog = {CONN_SCHEMA}; User ID = {IDENTIFIER}; Password = {PASSWORD}; MultipleActiveResultSets=True;";
|
||||
else
|
||||
strStatement = $"Data Source = localhost; Initial Catalog = {CONN_SCHEMA}; Integrated Security = SSPI; MultipleActiveResultSets=True;";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return strStatement;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,644 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Diagnostics;
|
||||
|
||||
using SystemX.Net.DB.LogProcess.DBType;
|
||||
using SystemX.Common;
|
||||
using SystemX.Common.Serialization;
|
||||
|
||||
using static SystemX.Net.Platform.Common.Util.LogMessage;
|
||||
|
||||
using log4net.Config;
|
||||
|
||||
namespace SystemX.Net.DB.LogProcess
|
||||
{
|
||||
public class XLogDBConnManager
|
||||
{
|
||||
public enum eDbType
|
||||
{
|
||||
Unknown,
|
||||
MS_SQL
|
||||
}
|
||||
|
||||
public enum eConnCategory
|
||||
{
|
||||
Main,
|
||||
ShortTerm,
|
||||
LongTerm
|
||||
}
|
||||
|
||||
private Stopwatch stMainDBAccessTime;
|
||||
|
||||
private Stopwatch stShortTermDBAccessTime;
|
||||
|
||||
private Stopwatch stLongTermDBAccessTime;
|
||||
|
||||
private bool MAIN_CONNECT_STATE { set; get; }
|
||||
|
||||
private bool SHORTTERM_CONNECT_STATE { set; get; }
|
||||
|
||||
private bool LONGTERM_CONNECT_STATE { set; get; }
|
||||
|
||||
private bool SET_CONN_STATE { set; get; }
|
||||
|
||||
private string strCurrentLongTermSchemaName { set; get; }
|
||||
private string strCurrentShortTermSummaryTableName { set; get; }
|
||||
private string strCurrentShortTermLogTableName { set; get; }
|
||||
|
||||
public bool CONNECT_STATE
|
||||
{
|
||||
get { return MAIN_CONNECT_STATE && SHORTTERM_CONNECT_STATE && LONGTERM_CONNECT_STATE && SET_CONN_STATE; }
|
||||
}
|
||||
|
||||
protected void SET_CONNECT_STATE(eConnCategory eConn, bool bValue)
|
||||
{
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
MAIN_CONNECT_STATE = bValue;
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
SHORTTERM_CONNECT_STATE = bValue;
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
LONGTERM_CONNECT_STATE = bValue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected bool GET_CONNECT_STATE(eConnCategory eConn)
|
||||
{
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
return MAIN_CONNECT_STATE;
|
||||
case eConnCategory.ShortTerm:
|
||||
return SHORTTERM_CONNECT_STATE;
|
||||
case eConnCategory.LongTerm:
|
||||
return LONGTERM_CONNECT_STATE;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private string ConfigPath { get; set; }
|
||||
|
||||
public bool SetConfigFilePath(string strConfigFilePath, bool bReadConfig = false)
|
||||
{
|
||||
ConfigPath = strConfigFilePath;
|
||||
|
||||
if (bReadConfig)
|
||||
return InfoConnection.ReadConfig(ConfigPath);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public string GetConfigFilePath()
|
||||
{
|
||||
return ConfigPath;
|
||||
}
|
||||
|
||||
private XDBConnInfo InfoConnection;
|
||||
|
||||
public XDBConnInfo GetDBConnectInfo()
|
||||
{
|
||||
return InfoConnection;
|
||||
}
|
||||
|
||||
private IDBLogControl MgrMainConnection { set; get; }
|
||||
|
||||
private IDBLogControl MgrShortTermConnection { set; get; }
|
||||
|
||||
private IDBLogControl MgrLongTermConnection { set; get; }
|
||||
|
||||
public XLogDBConnManager()
|
||||
{
|
||||
stMainDBAccessTime = new Stopwatch();
|
||||
stMainDBAccessTime.Start();
|
||||
|
||||
stShortTermDBAccessTime = new Stopwatch();
|
||||
stShortTermDBAccessTime.Start();
|
||||
|
||||
stLongTermDBAccessTime = new Stopwatch();
|
||||
stLongTermDBAccessTime.Start();
|
||||
|
||||
MAIN_CONNECT_STATE = false;
|
||||
SHORTTERM_CONNECT_STATE = false;
|
||||
LONGTERM_CONNECT_STATE = false;
|
||||
|
||||
InfoConnection = new XDBConnInfo();
|
||||
|
||||
strCurrentLongTermSchemaName = string.Empty;
|
||||
strCurrentShortTermSummaryTableName = string.Empty;
|
||||
strCurrentShortTermLogTableName = string.Empty;
|
||||
|
||||
SET_CONN_STATE = true;
|
||||
}
|
||||
|
||||
public long GetMainDBAccessTime()
|
||||
{
|
||||
if (stMainDBAccessTime != null)
|
||||
return stMainDBAccessTime.ElapsedMilliseconds;
|
||||
else
|
||||
return long.MinValue;
|
||||
}
|
||||
|
||||
public void SetMainDBAccessTime()
|
||||
{
|
||||
if (stMainDBAccessTime != null)
|
||||
stMainDBAccessTime.Restart();
|
||||
}
|
||||
|
||||
public long GetShortTermDBAccessTime()
|
||||
{
|
||||
if (stShortTermDBAccessTime != null)
|
||||
return stShortTermDBAccessTime.ElapsedMilliseconds;
|
||||
else
|
||||
return long.MinValue;
|
||||
}
|
||||
|
||||
public void SetShortTermDBAccessTime()
|
||||
{
|
||||
if (stShortTermDBAccessTime != null)
|
||||
stShortTermDBAccessTime.Restart();
|
||||
}
|
||||
|
||||
public long GetLongTermDBAccessTime()
|
||||
{
|
||||
if (stLongTermDBAccessTime != null)
|
||||
return stLongTermDBAccessTime.ElapsedMilliseconds;
|
||||
else
|
||||
return long.MinValue;
|
||||
}
|
||||
|
||||
public void SetLongTermDBAccessTime()
|
||||
{
|
||||
if (stLongTermDBAccessTime != null)
|
||||
stLongTermDBAccessTime.Restart();
|
||||
}
|
||||
|
||||
public IDBLogControl CurrentConnection(eConnCategory eConn)
|
||||
{
|
||||
if (GET_CONNECT_STATE(eConn))
|
||||
{
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
{
|
||||
if (stMainDBAccessTime != null)
|
||||
stMainDBAccessTime.Restart();
|
||||
}
|
||||
return MgrMainConnection;
|
||||
case eConnCategory.ShortTerm:
|
||||
{
|
||||
if (stShortTermDBAccessTime != null)
|
||||
stShortTermDBAccessTime.Restart();
|
||||
}
|
||||
return MgrShortTermConnection;
|
||||
case eConnCategory.LongTerm:
|
||||
{
|
||||
if (stLongTermDBAccessTime != null)
|
||||
stLongTermDBAccessTime.Restart();
|
||||
}
|
||||
return MgrLongTermConnection;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private bool ReadyForConnection(eConnCategory eConn)
|
||||
{
|
||||
bool bResult = true;
|
||||
|
||||
try
|
||||
{
|
||||
string strSetType = string.Empty;
|
||||
|
||||
eDbType eType = eDbType.Unknown;
|
||||
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
strSetType = InfoConnection.ConnMain.Type;
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
strSetType = InfoConnection.ConnShortTerm.Type;
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
strSetType = InfoConnection.ConnLongTerm.Type;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!Enum.TryParse(strSetType, out eType))
|
||||
throw new Exception("Failed Database type check.");
|
||||
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
MgrMainConnection = CreateDBConnMgr(eType);
|
||||
MgrMainConnection.ConnectionText = InfoConnection.GetConnectionStatement(eType, eConn);
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
MgrShortTermConnection = CreateDBConnMgr(eType);
|
||||
MgrShortTermConnection.ConnectionText = InfoConnection.GetConnectionStatement(eType, eConn);
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
MgrLongTermConnection = CreateDBConnMgr(eType);
|
||||
MgrLongTermConnection.ConnectionText = InfoConnection.GetConnectionStatement(eType, eConn);
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
bResult = false;
|
||||
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Failed make connection.[SystemX.Net.DB : XDBConnManager.MakeConnection]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
private bool MakeConnection(eConnCategory eConn)
|
||||
{
|
||||
bool bResult = true;
|
||||
|
||||
try
|
||||
{
|
||||
bResult = ReadyForConnection(eConn);
|
||||
|
||||
if(bResult)
|
||||
{
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
if (!MgrMainConnection.OpenConnection())
|
||||
throw new Exception("Failed [Main] IDBControl.OpenConnection()");
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
if (!MgrShortTermConnection.OpenConnection())
|
||||
throw new Exception("Failed [ShortTerm] IDBControl.OpenConnection()");
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
if (!MgrLongTermConnection.OpenConnection())
|
||||
throw new Exception("Failed [LongTerm] IDBControl.OpenConnection()");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
bResult = false;
|
||||
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Failed make connection.[SystemX.Net.DB : XDBConnManager.MakeConnection]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
||||
private bool MakeConnection(eConnCategory eConn, bool bUseHostInfo, string strHostTableName, string strUserTableName)
|
||||
{
|
||||
bool bResult = true;
|
||||
|
||||
try
|
||||
{
|
||||
bResult = ReadyForConnection(eConn);
|
||||
|
||||
if (bResult)
|
||||
{
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
if (!MgrMainConnection.OpenConnection(bUseHostInfo, strHostTableName, strUserTableName))
|
||||
throw new Exception("Failed [Main] IDBControl.OpenConnection()");
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
if (!MgrShortTermConnection.OpenConnection(bUseHostInfo, strHostTableName, strUserTableName))
|
||||
throw new Exception("Failed [ShortTerm] IDBControl.OpenConnection()");
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
if (!MgrLongTermConnection.OpenConnection(bUseHostInfo, strHostTableName, strUserTableName))
|
||||
throw new Exception("Failed [LongTerm] IDBControl.OpenConnection()");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
bResult = false;
|
||||
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Failed make connection.[SystemX.Net.DB : XDBConnManager.MakeConnection]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
public string GetDataDatabaseSchemaName(eConnCategory SetCategory)
|
||||
{
|
||||
if (SetCategory == eConnCategory.LongTerm) return InfoConnection.ConnLongTerm.SCHEMA;
|
||||
else throw new ArgumentException("Get of connection schema is supported only in LongTerm.");
|
||||
}
|
||||
public bool SetDataDatabaseSchemaName(eConnCategory SetCategory, string strSetName)
|
||||
{
|
||||
if (SetCategory == eConnCategory.LongTerm)
|
||||
{
|
||||
InfoConnection.ConnLongTerm.SCHEMA = strSetName;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
throw new ArgumentException("Change of connection schema is supported only in LongTerm.");
|
||||
}
|
||||
public string GetDataDatabaseSummaryTableName(eConnCategory SetCategory)
|
||||
{
|
||||
if (SetCategory == eConnCategory.ShortTerm) return InfoConnection.ConnShortTerm.SUMMARY_TABLE;
|
||||
else throw new ArgumentException("Get of summary table is supported only in ShortTerm.");
|
||||
}
|
||||
public bool SetDataDatabaseSummaryTableName(eConnCategory SetCategory, string strSetName)
|
||||
{
|
||||
if (SetCategory == eConnCategory.ShortTerm)
|
||||
{
|
||||
InfoConnection.ConnShortTerm.SUMMARY_TABLE = strSetName;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
throw new ArgumentException("Change of summary table is supported only in ShortTerm.");
|
||||
}
|
||||
public string GetDataDatabaseLogTableName(eConnCategory SetCategory)
|
||||
{
|
||||
if (SetCategory == eConnCategory.ShortTerm) return InfoConnection.ConnShortTerm.LOG_TABLE;
|
||||
else throw new ArgumentException("Get of log table is supported only in ShortTerm.");
|
||||
}
|
||||
public bool SetDataDatabaseLogTableName(eConnCategory SetCategory, string strSetName)
|
||||
{
|
||||
if (SetCategory == eConnCategory.ShortTerm)
|
||||
{
|
||||
InfoConnection.ConnShortTerm.LOG_TABLE = strSetName;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
throw new ArgumentException("Change of log table is supported only in ShortTerm.");
|
||||
}
|
||||
|
||||
public bool CheckDatabaseConnection(bool bReadCfgFile = true, bool bAutoAttachNameDataDb = true)
|
||||
{
|
||||
SET_CONN_STATE = true;
|
||||
|
||||
return OpenConnection(bReadCfgFile, bAutoAttachNameDataDb);
|
||||
}
|
||||
|
||||
public bool OpenConnection(bool bReadCfgFile = true, bool bAutoAttachNameDataDb = true)
|
||||
{
|
||||
SET_CONNECT_STATE(eConnCategory.Main, true);
|
||||
SET_CONNECT_STATE(eConnCategory.ShortTerm, true);
|
||||
SET_CONNECT_STATE(eConnCategory.LongTerm, true);
|
||||
|
||||
try
|
||||
{
|
||||
if (bReadCfgFile)
|
||||
{
|
||||
if (InfoConnection.ReadConfig(ConfigPath) == false)
|
||||
{
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Fail read DB info file.[SystemX.Net.DB : XDBConnManager.OpenConnection]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
|
||||
throw new Exception("Failed ReadConfig()");
|
||||
}
|
||||
}
|
||||
|
||||
bool bNeedTryLongTermConn = false;
|
||||
bool bNeedTryShortTermConn = false;
|
||||
|
||||
if (bAutoAttachNameDataDb)
|
||||
{
|
||||
string strYYYY = DateTime.Now.ToString("yyyy");
|
||||
string strMM = DateTime.Now.ToString("MM");
|
||||
string strdd = DateTime.Now.ToString("dd");
|
||||
|
||||
string strGetSchemaName = GetDataDatabaseSchemaName(eConnCategory.LongTerm);
|
||||
string strGetSummaryTableName = GetDataDatabaseSummaryTableName(eConnCategory.ShortTerm);
|
||||
string strGetLogTableName = GetDataDatabaseLogTableName(eConnCategory.ShortTerm);
|
||||
|
||||
//LongTerm Schema Name
|
||||
string[] GetNames = strGetSchemaName.Split('_');
|
||||
|
||||
if(GetNames.Count() >= 1)
|
||||
{
|
||||
strGetSchemaName = GetNames[0] + ("_" + strYYYY);
|
||||
|
||||
SetDataDatabaseSchemaName(eConnCategory.LongTerm, strGetSchemaName);
|
||||
|
||||
if (strCurrentLongTermSchemaName.Length <= 0)
|
||||
{
|
||||
strCurrentLongTermSchemaName = GetDataDatabaseSchemaName(eConnCategory.LongTerm);
|
||||
|
||||
bNeedTryLongTermConn = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(strCurrentLongTermSchemaName.CompareTo(GetDataDatabaseSchemaName(eConnCategory.LongTerm)) != 0)
|
||||
{
|
||||
strCurrentLongTermSchemaName = GetDataDatabaseSchemaName(eConnCategory.LongTerm);
|
||||
|
||||
bNeedTryLongTermConn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//ShortTerm Summary Table Name
|
||||
GetNames = strGetSummaryTableName.Split('_');
|
||||
|
||||
if (GetNames.Count() >= 2)
|
||||
{
|
||||
strGetSummaryTableName = GetNames[0] + "_" + GetNames[1] + ("_" + strYYYY);
|
||||
|
||||
SetDataDatabaseSummaryTableName(eConnCategory.ShortTerm, strGetSummaryTableName);
|
||||
|
||||
if (strCurrentShortTermSummaryTableName.Length <= 0)
|
||||
{
|
||||
strCurrentShortTermSummaryTableName = GetDataDatabaseSummaryTableName(eConnCategory.ShortTerm);
|
||||
|
||||
bNeedTryShortTermConn = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strCurrentShortTermSummaryTableName.CompareTo(GetDataDatabaseSummaryTableName(eConnCategory.ShortTerm)) != 0)
|
||||
{
|
||||
strCurrentShortTermSummaryTableName = GetDataDatabaseSummaryTableName(eConnCategory.ShortTerm);
|
||||
|
||||
bNeedTryShortTermConn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//ShortTerm Log Table Name
|
||||
GetNames = strGetLogTableName.Split('_');
|
||||
|
||||
if (GetNames.Count() >= 2)
|
||||
{
|
||||
strGetLogTableName = GetNames[0] + "_" + GetNames[1] + ("_" + strYYYY);
|
||||
|
||||
SetDataDatabaseLogTableName(eConnCategory.ShortTerm, strGetLogTableName);
|
||||
|
||||
if (strCurrentShortTermLogTableName.Length <= 0)
|
||||
{
|
||||
strCurrentShortTermLogTableName = GetDataDatabaseLogTableName(eConnCategory.ShortTerm);
|
||||
|
||||
bNeedTryShortTermConn = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strCurrentShortTermLogTableName.CompareTo(GetDataDatabaseLogTableName(eConnCategory.ShortTerm)) != 0)
|
||||
{
|
||||
strCurrentShortTermLogTableName = GetDataDatabaseLogTableName(eConnCategory.ShortTerm);
|
||||
|
||||
bNeedTryShortTermConn = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(bNeedTryShortTermConn)
|
||||
SET_CONNECT_STATE(eConnCategory.ShortTerm, MakeConnection(eConnCategory.ShortTerm));
|
||||
if(bNeedTryLongTermConn)
|
||||
SET_CONNECT_STATE(eConnCategory.LongTerm, MakeConnection(eConnCategory.LongTerm));
|
||||
|
||||
if (bNeedTryShortTermConn || bNeedTryLongTermConn)
|
||||
SET_CONNECT_STATE(eConnCategory.Main, MakeConnection(eConnCategory.Main));
|
||||
|
||||
if (GET_CONNECT_STATE(eConnCategory.Main) == false ||
|
||||
GET_CONNECT_STATE(eConnCategory.ShortTerm) == false ||
|
||||
GET_CONNECT_STATE(eConnCategory.LongTerm) == false)
|
||||
throw new Exception();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Fail db connect.[SystemX.Net.DB : XDBConnManager.OpenConnection - Parameter Type]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
|
||||
SET_CONN_STATE = false;
|
||||
}
|
||||
|
||||
return CONNECT_STATE;
|
||||
}
|
||||
|
||||
public bool OpenConnection(bool bUseHostInfo, string strHostTableName, string strUserTableName, bool bReadCfgFile = true)
|
||||
{
|
||||
SET_CONNECT_STATE(eConnCategory.Main, true);
|
||||
SET_CONNECT_STATE(eConnCategory.ShortTerm, true);
|
||||
SET_CONNECT_STATE(eConnCategory.LongTerm, true);
|
||||
|
||||
try
|
||||
{
|
||||
if (bReadCfgFile)
|
||||
{
|
||||
if (InfoConnection.ReadConfig(ConfigPath) == false)
|
||||
{
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Fail read DB info file.[SystemX.Net.DB : XDBConnManager.OpenConnection]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
|
||||
throw new Exception("Failed ReadConfig()");
|
||||
}
|
||||
}
|
||||
|
||||
SET_CONNECT_STATE(eConnCategory.Main, MakeConnection(eConnCategory.Main, bUseHostInfo, strHostTableName, strUserTableName));
|
||||
SET_CONNECT_STATE(eConnCategory.ShortTerm, MakeConnection(eConnCategory.ShortTerm));
|
||||
SET_CONNECT_STATE(eConnCategory.LongTerm, MakeConnection(eConnCategory.LongTerm));
|
||||
|
||||
if (GET_CONNECT_STATE(eConnCategory.Main) == false ||
|
||||
GET_CONNECT_STATE(eConnCategory.ShortTerm) == false ||
|
||||
GET_CONNECT_STATE(eConnCategory.LongTerm) == false)
|
||||
throw new Exception();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Fail db connect.[SystemX.Net.DB : XDBConnManager.OpenConnection - Parameter Type]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
|
||||
SET_CONN_STATE = false;
|
||||
}
|
||||
|
||||
return CONNECT_STATE;
|
||||
}
|
||||
|
||||
IDBLogControl CreateDBConnMgr(eDbType eType)
|
||||
{
|
||||
switch (eType)
|
||||
{
|
||||
case eDbType.MS_SQL:
|
||||
return new XDBLogTMSSQL();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public SqlDataReader QueryDatabase(eConnCategory eConn, string strStmt)
|
||||
{
|
||||
IDBLogControl ctrlDB = null;
|
||||
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
ctrlDB = MgrMainConnection;
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
ctrlDB = MgrShortTermConnection;
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
ctrlDB = MgrLongTermConnection;
|
||||
break;
|
||||
}
|
||||
|
||||
SqlDataReader drResult = ctrlDB.QueryDatabase(strStmt);
|
||||
|
||||
return drResult;
|
||||
}
|
||||
public DataTable QueryDatabaseInTable(eConnCategory eConn, string strStmt)
|
||||
{
|
||||
IDBLogControl ctrlDB = null;
|
||||
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
ctrlDB = MgrMainConnection;
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
ctrlDB = MgrShortTermConnection;
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
ctrlDB = MgrLongTermConnection;
|
||||
break;
|
||||
}
|
||||
|
||||
DataTable dtResult = ctrlDB.QueryDataTable(strStmt);
|
||||
|
||||
return dtResult;
|
||||
}
|
||||
public DataSet QueryDatabaseInSet(eConnCategory eConn, string strStmt)
|
||||
{
|
||||
IDBLogControl ctrlDB = null;
|
||||
|
||||
switch (eConn)
|
||||
{
|
||||
case eConnCategory.Main:
|
||||
ctrlDB = MgrMainConnection;
|
||||
break;
|
||||
case eConnCategory.ShortTerm:
|
||||
ctrlDB = MgrShortTermConnection;
|
||||
break;
|
||||
case eConnCategory.LongTerm:
|
||||
ctrlDB = MgrLongTermConnection;
|
||||
break;
|
||||
}
|
||||
|
||||
DataSet dsResult = ctrlDB.QueryDataSet(strStmt);
|
||||
|
||||
return dsResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,412 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using SystemX.Common;
|
||||
using SystemX.Common.Serialization;
|
||||
using static SystemX.Net.Platform.Common.Util.LogMessage;
|
||||
|
||||
namespace SystemX.Net.DB.LogProcess.DBType
|
||||
{
|
||||
public partial class XDBLogTMSSQL
|
||||
{
|
||||
public bool ExecuteNonQuery(SqlCommand cmd)
|
||||
{
|
||||
bool bStatus = true;
|
||||
int iRecordsAffected = 0;
|
||||
|
||||
if (cmd == null)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
if (cmd.Connection == null)
|
||||
cmd.Connection = dbConnection;
|
||||
|
||||
iRecordsAffected = cmd.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
iRecordsAffected = 0;
|
||||
|
||||
bStatus = false;
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy -MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] ExecuteNonQuery command failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + cmd.CommandText + "] ExecuteNonQuery command failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (iRecordsAffected > 0)
|
||||
bStatus = true;
|
||||
else
|
||||
bStatus = false;
|
||||
|
||||
return bStatus;
|
||||
}
|
||||
|
||||
public bool ExecuteNonCommandQuery(SqlCommand cmd)
|
||||
{
|
||||
bool bStatus = true;
|
||||
int iRecordsAffected = 0;
|
||||
|
||||
if (cmd == null)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
if (cmd.Connection == null)
|
||||
cmd.Connection = dbConnection;
|
||||
|
||||
iRecordsAffected = cmd.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string strErrorMsg = e.Message;
|
||||
|
||||
iRecordsAffected = 0;
|
||||
|
||||
bStatus = false;
|
||||
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] ExecuteNonQuery command failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + cmd.CommandText + "] ExecuteNonQuery command failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (iRecordsAffected > 0)
|
||||
bStatus = true;
|
||||
else
|
||||
bStatus = false;
|
||||
|
||||
return bStatus;
|
||||
}
|
||||
|
||||
public bool ExecuteNonStreamQuery(SqlCommand cmd)
|
||||
{
|
||||
bool bStatus = true;
|
||||
int iRecordsAffected = 0;
|
||||
|
||||
if (cmd == null)
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
if (cmd.Connection == null)
|
||||
cmd.Connection = dbConnection;
|
||||
|
||||
iRecordsAffected = cmd.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string strErrorMsg = e.Message;
|
||||
|
||||
iRecordsAffected = 0;
|
||||
|
||||
bStatus = false;
|
||||
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] ExecuteNonQuery command failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + cmd.CommandText + "] ExecuteNonQuery command failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (iRecordsAffected > 0)
|
||||
bStatus = true;
|
||||
else
|
||||
bStatus = false;
|
||||
|
||||
return bStatus;
|
||||
}
|
||||
|
||||
public SqlDataReader QueryDatabase(string strSQL)
|
||||
{
|
||||
bool bHasRow = false;
|
||||
int nCnt = 0;
|
||||
|
||||
SqlDataReader QueryReader = null;
|
||||
|
||||
try
|
||||
{
|
||||
using (var dbExcuteCommand = new SqlCommand(strSQL, dbConnection))
|
||||
{
|
||||
QueryReader = dbExcuteCommand.ExecuteReader();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (QueryReader != null)
|
||||
QueryReader.Close();
|
||||
|
||||
QueryReader = null;
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] QueryDatabase failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + strSQL + "] QueryDatabase failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (QueryReader != null)
|
||||
{
|
||||
bHasRow = QueryReader.HasRows;
|
||||
nCnt = QueryReader.RecordsAffected;
|
||||
}
|
||||
|
||||
return QueryReader;
|
||||
}
|
||||
|
||||
public SqlDataReader QueryDatabaseSub(string strSQL)
|
||||
{
|
||||
bool bHasRow = false;
|
||||
int nCnt = 0;
|
||||
|
||||
SqlDataReader QueryReader = null;
|
||||
|
||||
try
|
||||
{
|
||||
using (var dbExcuteCommand = new SqlCommand(strSQL, dbConnection))
|
||||
{
|
||||
QueryReader = dbExcuteCommand.ExecuteReader();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (QueryReader != null)
|
||||
QueryReader.Close();
|
||||
|
||||
QueryReader = null;
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] QueryDatabaseSub failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + strSQL + "] QueryDatabaseSub failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (QueryReader != null)
|
||||
{
|
||||
bHasRow = QueryReader.HasRows;
|
||||
nCnt = QueryReader.RecordsAffected;
|
||||
}
|
||||
|
||||
return QueryReader;
|
||||
}
|
||||
|
||||
public SqlDataReader QueryStreamDatabase(string strSQL)
|
||||
{
|
||||
bool bHasRow = false;
|
||||
int nCnt = 0;
|
||||
|
||||
SqlDataReader QueryReader = null;
|
||||
|
||||
try
|
||||
{
|
||||
using (var dbExcuteCommand = new SqlCommand(strSQL, dbConnection))
|
||||
{
|
||||
QueryReader = dbExcuteCommand.ExecuteReader();
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (QueryReader != null)
|
||||
QueryReader.Close();
|
||||
|
||||
QueryReader = null;
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] QueryStreamDatabase failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + strSQL + "] QueryStreamDatabase failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (QueryReader != null)
|
||||
{
|
||||
bHasRow = QueryReader.HasRows;
|
||||
nCnt = QueryReader.RecordsAffected;
|
||||
}
|
||||
|
||||
return QueryReader;
|
||||
}
|
||||
|
||||
public SqlDataReader QueryCommandDatabase(string strSQL, bool bUseTransaction = false)
|
||||
{
|
||||
bool bHasRow = false;
|
||||
int nCnt = 0;
|
||||
|
||||
SqlDataReader QueryReader = null;
|
||||
|
||||
try
|
||||
{
|
||||
if (bUseTransaction)
|
||||
{
|
||||
// Start a local transaction.
|
||||
SqlTransaction sqlTran = dbConnection.BeginTransaction();
|
||||
|
||||
// Enlist a command in the current transaction.
|
||||
SqlCommand command = dbConnection.CreateCommand();
|
||||
command.Transaction = sqlTran;
|
||||
|
||||
try
|
||||
{
|
||||
// Execute two separate commands.
|
||||
command.CommandText = strSQL;
|
||||
QueryReader = command.ExecuteReader();
|
||||
|
||||
// Commit the transaction.
|
||||
sqlTran.Commit();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Handle the exception if the transaction fails to commit.
|
||||
string strErrorMsg = ex.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] QueryCommandDatabase Transaction failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + strSQL + "] QueryCommandDatabase Transaction failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
|
||||
try
|
||||
{
|
||||
// Attempt to roll back the transaction.
|
||||
sqlTran.Rollback();
|
||||
}
|
||||
catch (Exception exRollback)
|
||||
{
|
||||
// Throws an InvalidOperationException if the connection
|
||||
// is closed or the transaction has already been rolled
|
||||
// back on the server.
|
||||
strErrorMsg = exRollback.Message;
|
||||
strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] QueryCommandDatabase Transaction-Rollback failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (var dbExcuteCommand = new SqlCommand(strSQL, dbConnection))
|
||||
{
|
||||
QueryReader = dbExcuteCommand.ExecuteReader();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (QueryReader != null)
|
||||
QueryReader.Close();
|
||||
|
||||
QueryReader = null;
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] QueryCommandDatabase failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + strSQL + "] QueryCommandDatabase failed. [SystemX.Net.DB.DBType : XDBTMSSQL.ExecuteNonQuery]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
if (QueryReader != null)
|
||||
{
|
||||
bHasRow = QueryReader.HasRows;
|
||||
nCnt = QueryReader.RecordsAffected;
|
||||
}
|
||||
|
||||
return QueryReader;
|
||||
}
|
||||
|
||||
public DataTable QueryDataTable(string strSQL)
|
||||
{
|
||||
SqlDataReader Sqldr = QueryDatabase(strSQL);
|
||||
|
||||
queryDataTable = new DataTable();
|
||||
queryDataTable.Load(Sqldr);
|
||||
|
||||
return queryDataTable;
|
||||
|
||||
//return null;
|
||||
}
|
||||
|
||||
public DataTable QueryDataTable(string strSQL, out bool bHasRows)
|
||||
{
|
||||
bHasRows = false;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public DataTable QueryDataTable(string strSQL, out int iRecordsAffected)
|
||||
{
|
||||
iRecordsAffected = 0;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public DataTable QueryDataTable(string strSQL, out bool bHasRows, out int iRecordsAffected)
|
||||
{
|
||||
bHasRows = false;
|
||||
iRecordsAffected = 0;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public DataSet QueryDataSet(string strSQL)
|
||||
{
|
||||
SqlDataReader Sqldr = QueryDatabase(strSQL);
|
||||
|
||||
queryDataTable = new DataTable();
|
||||
queryDataTable.Load(Sqldr);
|
||||
|
||||
queryDataSet = new DataSet();
|
||||
queryDataSet.Tables.Add(queryDataTable);
|
||||
|
||||
return queryDataSet;
|
||||
}
|
||||
|
||||
public DataSet QueryDataSet(string strSQL, out bool bHasRows)
|
||||
{
|
||||
bHasRows = false;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public DataSet QueryDataSet(string strSQL, out int iRecordsAffected)
|
||||
{
|
||||
iRecordsAffected = 0;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public DataSet QueryDataSet(string strSQL, out bool bHasRows, out int iRecordsAffected)
|
||||
{
|
||||
bHasRows = false;
|
||||
iRecordsAffected = 0;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/*
|
||||
public DataSet Query(string strSetCommand, out int iRecordsAffect)
|
||||
{
|
||||
iRecordsAffect = 0;
|
||||
|
||||
queryDataSet = null;
|
||||
|
||||
try
|
||||
{
|
||||
dbCommand.CommandText = strSetCommand;
|
||||
queryDataReader = dbCommand.ExecuteReader();
|
||||
|
||||
queryDataTable = new DataTable();
|
||||
queryDataTable.Load(queryDataReader);
|
||||
|
||||
queryDataSet = new DataSet();
|
||||
queryDataSet.Tables.Add(queryDataTable);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
//throw new CommonQueryException("Execution failed for the statement.[SystemX.Net.DB : MSSQL|COMMON.Query]");
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"General packet marshalling failed.[SystemX.Common : COMMON.GetHeaderProtocol]", ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return queryDataSet;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,450 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using SystemX.Common;
|
||||
using SystemX.Common.Serialization;
|
||||
using static SystemX.Net.Platform.Common.Util.LogMessage;
|
||||
|
||||
namespace SystemX.Net.DB.LogProcess.DBType
|
||||
{
|
||||
public partial class XDBLogTMSSQL : IDBLogControl, IDisposable
|
||||
{
|
||||
private SqlConnection dbConnection;
|
||||
private SqlCommand dbCommand;
|
||||
private SqlDataReader queryDataReader;
|
||||
|
||||
private DataSet queryDataSet;
|
||||
private DataTable queryDataTable;
|
||||
|
||||
private byte[] ucCollectSerializationSchema;
|
||||
private XTableInfo XSchemaTables;
|
||||
|
||||
private DataTable HostList;
|
||||
private DataTable UserList;
|
||||
|
||||
public string ConnectionText { get; set; }
|
||||
|
||||
public bool IsConnected { get; set; }
|
||||
|
||||
private string strSetHostTableName;
|
||||
private string strSetUserTableName;
|
||||
|
||||
public byte[] GetCollectSerializationSchemaInfo()
|
||||
{
|
||||
return ucCollectSerializationSchema;
|
||||
}
|
||||
|
||||
public XTableInfo GetCollectSchemaInfo()
|
||||
{
|
||||
return XSchemaTables;
|
||||
}
|
||||
|
||||
public DataTable GetHostList(bool bDBQueryCheck = false)
|
||||
{
|
||||
if(bDBQueryCheck == false)
|
||||
return HostList;
|
||||
else
|
||||
{
|
||||
if (QueryHostList(strSetHostTableName))
|
||||
return HostList;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public DataTable GetUserList(bool bDBQueryCheck = false)
|
||||
{
|
||||
if (bDBQueryCheck == false)
|
||||
return UserList;
|
||||
else
|
||||
{
|
||||
if (QueryUserList(strSetUserTableName))
|
||||
return UserList;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public XDBLogTMSSQL()
|
||||
{
|
||||
HostList = null;
|
||||
}
|
||||
~XDBLogTMSSQL()
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool bDisposing)
|
||||
{
|
||||
if (bDisposing)
|
||||
ChkCloseConnect();
|
||||
|
||||
// do releasing unmanaged resource (종결자가 없는 객체의 자원 해제)
|
||||
// i.e. close file handle of operating systems
|
||||
|
||||
// suppress calling of Finalizer
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
public bool InitConnection()
|
||||
{
|
||||
try
|
||||
{
|
||||
ChkCloseConnect();
|
||||
|
||||
dbConnection = null;
|
||||
dbCommand = null;
|
||||
queryDataReader = null;
|
||||
queryDataSet = null;
|
||||
queryDataTable = null;
|
||||
|
||||
IsConnected = false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Initialization is Failed. Error: {ex.Message}");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void ChkCloseConnect()
|
||||
{
|
||||
if (IsConnected)
|
||||
{
|
||||
if (dbConnection != null)
|
||||
{
|
||||
dbConnection.Close();
|
||||
dbConnection.Dispose();
|
||||
dbConnection = null;
|
||||
}
|
||||
|
||||
IsConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool OpenConnection()
|
||||
{
|
||||
ChkCloseConnect();
|
||||
|
||||
try
|
||||
{
|
||||
dbCommand = new SqlCommand();
|
||||
dbConnection = new SqlConnection(ConnectionText);
|
||||
dbConnection.Open();
|
||||
|
||||
dbCommand.Connection = dbConnection;
|
||||
|
||||
if (CollectSchemaInfomation())
|
||||
IsConnected = true;
|
||||
else
|
||||
Console.WriteLine($"SystemX Database CollectSchemaInfomation() is Failed.");
|
||||
}
|
||||
catch (SqlException exsql)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Connection Open is Failed. Error: {exsql.Message}");
|
||||
|
||||
IsConnected = false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Connection Open is Failed. Error: {ex.Message}");
|
||||
|
||||
IsConnected = false;
|
||||
}
|
||||
|
||||
return IsConnected;
|
||||
}
|
||||
public bool OpenConnection(bool bUseHostInfo, string strHostTableName, string strUserTableName)
|
||||
{
|
||||
ChkCloseConnect();
|
||||
|
||||
strSetHostTableName = string.Empty;
|
||||
strSetUserTableName = string.Empty;
|
||||
|
||||
try
|
||||
{
|
||||
dbCommand = new SqlCommand();
|
||||
dbConnection = new SqlConnection(ConnectionText);
|
||||
dbConnection.Open();
|
||||
|
||||
dbCommand.Connection = dbConnection;
|
||||
|
||||
if (CollectSchemaInfomation())
|
||||
{
|
||||
if (bUseHostInfo)
|
||||
{
|
||||
strSetHostTableName = strHostTableName;
|
||||
strSetUserTableName = strUserTableName;
|
||||
|
||||
if (QueryHostList(strSetHostTableName) &&
|
||||
QueryUserList(strSetUserTableName))
|
||||
IsConnected = true;
|
||||
else
|
||||
Console.WriteLine($"SystemX Database QueryHostList() is Failed.");
|
||||
}
|
||||
else
|
||||
IsConnected = true;
|
||||
}
|
||||
else
|
||||
Console.WriteLine($"SystemX Database CollectSchemaInfomation() is Failed.");
|
||||
}
|
||||
catch (SqlException exsql)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Connection Open is Failed. Error: {exsql.Message}");
|
||||
|
||||
IsConnected = false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Connection Open is Failed. Error: {ex.Message}");
|
||||
|
||||
IsConnected = false;
|
||||
}
|
||||
|
||||
return IsConnected;
|
||||
}
|
||||
|
||||
public bool CloseConnection()
|
||||
{
|
||||
try
|
||||
{
|
||||
ChkCloseConnect();
|
||||
}
|
||||
catch (SqlException exsql)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Connection Open is Failed. Error: {exsql.Message}");
|
||||
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"SystemX Database Connection Open is Failed. Error: {ex.Message}");
|
||||
|
||||
throw;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public SqlConnection getConnection()
|
||||
{
|
||||
return dbConnection;
|
||||
}
|
||||
|
||||
public string MakeTableInfoQuery(string strTableName)
|
||||
{
|
||||
//--컬럼 정보 가져오기
|
||||
string strTableColInfoCommand = "SELECT A.TABLE_CATALOG" +
|
||||
",A.TABLE_NAME" +
|
||||
",A.ORDINAL_POSITION" +
|
||||
",A.COLUMN_NAME" +
|
||||
",A.DATA_TYPE" +
|
||||
",ISNULL(A.CHARACTER_MAXIMUM_LENGTH, '') CHARACTER_LENGTH" +
|
||||
",ISNULL(A.NUMERIC_PRECISION, '') NUMBERIC_LENGTH" +
|
||||
",A.IS_NULLABLE" +
|
||||
",ISNULL(A.COLUMN_DEFAULT, '')" +
|
||||
",ISNULL(B.CONSTRAINT_NAME, '')" +
|
||||
",ISNULL(A.CHARACTER_SET_NAME, '')" +
|
||||
",ISNULL(A.COLLATION_NAME, '')" +
|
||||
",CASE WHEN ISNULL(C.NAME, '') = '' THEN '' ELSE 'Identity' END AUTO" +
|
||||
" FROM INFORMATION_SCHEMA.COLUMNS A LEFT OUTER JOIN" +
|
||||
" INFORMATION_SCHEMA.KEY_COLUMN_USAGE B" +
|
||||
" ON A.TABLE_NAME = B.TABLE_NAME" +
|
||||
" AND A.COLUMN_NAME = B.COLUMN_NAME" +
|
||||
" LEFT OUTER JOIN" +
|
||||
" syscolumns C" +
|
||||
" ON C.ID = object_id(A.TABLE_NAME) AND A.COLUMN_NAME = C.NAME AND C.COLSTAT & 1 = 1 WHERE A.TABLE_NAME = " +
|
||||
"'" + strTableName + "'" +
|
||||
" ORDER BY A.ORDINAL_POSITION";
|
||||
|
||||
return strTableColInfoCommand;
|
||||
}
|
||||
|
||||
public bool CollectSchemaInfomation()
|
||||
{
|
||||
bool bInfoCollectResult = true;
|
||||
|
||||
try
|
||||
{
|
||||
dbCommand.CommandText = "SELECT * FROM INFORMATION_SCHEMA.TABLES A ORDER BY A.TABLE_NAME;";
|
||||
|
||||
queryDataReader = dbCommand.ExecuteReader();
|
||||
DataTable dtQueryTable = new DataTable();
|
||||
dtQueryTable.Load(queryDataReader);
|
||||
|
||||
List<string> listTableInfo = new List<string>();
|
||||
|
||||
if (dtQueryTable.Columns.Contains("TABLE_NAME"))
|
||||
{
|
||||
int iColPos = dtQueryTable.Columns.IndexOf("TABLE_NAME");
|
||||
|
||||
for (int i = 0; i < dtQueryTable.Columns[0].Table.Rows.Count; i++)
|
||||
{
|
||||
object[] objRows = dtQueryTable.Columns[0].Table.Rows[i].ItemArray;
|
||||
|
||||
string strGetTableName = objRows[iColPos] as string;
|
||||
|
||||
if (strGetTableName.IndexOf("sysdiagrams") < 0)
|
||||
listTableInfo.Add(objRows[iColPos] as string);
|
||||
}
|
||||
}
|
||||
|
||||
int iNamePos = 0, iTypePos = 0, iCharLengPos = 0, iNumLengPos = 0, iIsNullAblePos = 0, iAutoPos = 0;
|
||||
|
||||
int iPosition = 0;
|
||||
XTable[] listTable = new XTable[listTableInfo.Count];
|
||||
|
||||
foreach (string strTbName in listTableInfo)
|
||||
{
|
||||
dbCommand.CommandText = MakeTableInfoQuery(strTbName);
|
||||
queryDataReader = dbCommand.ExecuteReader();
|
||||
dtQueryTable = new DataTable();
|
||||
dtQueryTable.Load(queryDataReader);
|
||||
|
||||
if (dtQueryTable.Columns.Contains("COLUMN_NAME"))
|
||||
iNamePos = dtQueryTable.Columns.IndexOf("COLUMN_NAME");
|
||||
if (dtQueryTable.Columns.Contains("DATA_TYPE"))
|
||||
iTypePos = dtQueryTable.Columns.IndexOf("DATA_TYPE");
|
||||
if (dtQueryTable.Columns.Contains("CHARACTER_LENGTH"))
|
||||
iCharLengPos = dtQueryTable.Columns.IndexOf("CHARACTER_LENGTH");
|
||||
if (dtQueryTable.Columns.Contains("NUMBERIC_LENGTH"))
|
||||
iNumLengPos = dtQueryTable.Columns.IndexOf("NUMBERIC_LENGTH");
|
||||
if (dtQueryTable.Columns.Contains("IS_NULLABLE"))
|
||||
iIsNullAblePos = dtQueryTable.Columns.IndexOf("IS_NULLABLE");
|
||||
if (dtQueryTable.Columns.Contains("AUTO"))
|
||||
iAutoPos = dtQueryTable.Columns.IndexOf("AUTO");
|
||||
|
||||
listTable[iPosition] = new XTable(strTbName);
|
||||
for (int i = 0; i < dtQueryTable.Rows[0].Table.Rows.Count; i++)
|
||||
{
|
||||
object[] objRows = dtQueryTable.Columns[0].Table.Rows[i].ItemArray;
|
||||
|
||||
string strGetName = objRows[iNamePos] as string;
|
||||
string strGetTypeName = objRows[iTypePos] as string;
|
||||
int iGetTypeCharLeng = Convert.ToInt32(objRows[iCharLengPos]);
|
||||
int iGetTypeNumLeng = Convert.ToInt32(objRows[iNumLengPos]);
|
||||
string strGetNullState = objRows[iIsNullAblePos] as string;
|
||||
string strGetAuto = objRows[iAutoPos] as string;
|
||||
|
||||
bool bGetIsNullAble = false;
|
||||
|
||||
if (strGetNullState.IndexOf("YES") >= 0)
|
||||
bGetIsNullAble = true;
|
||||
else if (strGetNullState.IndexOf("NO") >= 0)
|
||||
bGetIsNullAble = false;
|
||||
|
||||
Type SetThisType = null;
|
||||
switch (strGetTypeName)
|
||||
{
|
||||
case "bit":
|
||||
//SET_CODE = TypeCode.Boolean;
|
||||
SetThisType = typeof(Boolean);
|
||||
break;
|
||||
case "tinyint":
|
||||
//SET_CODE = TypeCode.Int64;
|
||||
SetThisType = typeof(Byte);
|
||||
break;
|
||||
case "int":
|
||||
//SET_CODE = TypeCode.Int32;
|
||||
SetThisType = typeof(Int32);
|
||||
break;
|
||||
case "bigint":
|
||||
//SET_CODE = TypeCode.Int64;
|
||||
SetThisType = typeof(Int64);
|
||||
break;
|
||||
case "float":
|
||||
//SET_CODE = TypeCode.Double;
|
||||
SetThisType = typeof(Double);
|
||||
break;
|
||||
case "nvarchar":
|
||||
//SET_CODE = TypeCode.String;
|
||||
SetThisType = typeof(String);
|
||||
break;
|
||||
case "nchar":
|
||||
//SET_CODE = TypeCode.String;
|
||||
SetThisType = typeof(String);
|
||||
break;
|
||||
case "datetime":
|
||||
//SET_CODE = TypeCode.DateTime;
|
||||
SetThisType = typeof(DateTime);
|
||||
break;
|
||||
}
|
||||
|
||||
listTable[iPosition].XTableAdd(i, strGetName, SetThisType, iGetTypeCharLeng, bGetIsNullAble);
|
||||
}
|
||||
|
||||
iPosition++;
|
||||
}
|
||||
|
||||
XSchemaTables = new XTableInfo(listTable);
|
||||
|
||||
ucCollectSerializationSchema = SystemXNetSerialization.ObjectToByteArray(XSchemaTables);
|
||||
XTableInfo XTablesReturn = (XTableInfo)SystemXNetSerialization.ByteArrayToObject(ucCollectSerializationSchema);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
bInfoCollectResult = false;
|
||||
|
||||
//throw new Exception("Collect Schema infomation fail!");
|
||||
|
||||
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>") + @"Collect Schema infomation fail![SystemX.Net.DB.DBType : XDBTMSSQL.CollectSchemaInfomation]\r\n" + e.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return bInfoCollectResult;
|
||||
}
|
||||
public bool QueryHostList(string strTableName)
|
||||
{
|
||||
try
|
||||
{
|
||||
dbCommand.CommandText = "SELECT * FROM " + $"{strTableName} WITH(NOLOCK) ORDER BY NO ASC;";
|
||||
|
||||
queryDataReader = dbCommand.ExecuteReader();
|
||||
HostList = new DataTable();
|
||||
HostList.Load(queryDataReader);
|
||||
}
|
||||
catch
|
||||
{
|
||||
HostList = null;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool QueryUserList(string strTableName)
|
||||
{
|
||||
try
|
||||
{
|
||||
dbCommand.CommandText = "SELECT * FROM " + $"{strTableName} WITH(NOLOCK) ORDER BY NO ASC;";
|
||||
|
||||
queryDataReader = dbCommand.ExecuteReader();
|
||||
UserList = new DataTable();
|
||||
UserList.Load(queryDataReader);
|
||||
}
|
||||
catch
|
||||
{
|
||||
UserList = null;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SystemX.Net.DB.LogProcess.DBType
|
||||
{
|
||||
public interface IDBLogControl
|
||||
{
|
||||
string ConnectionText { get; set; }
|
||||
bool IsConnected { get; set; }
|
||||
|
||||
bool InitConnection();
|
||||
bool OpenConnection();
|
||||
bool OpenConnection(bool bUseHostInfo, string strHostTableName, string strUserTableName);
|
||||
|
||||
bool CloseConnection();
|
||||
|
||||
SqlConnection getConnection();
|
||||
|
||||
string MakeTableInfoQuery(string strTableName);
|
||||
bool CollectSchemaInfomation();
|
||||
|
||||
byte[] GetCollectSerializationSchemaInfo();
|
||||
|
||||
XTableInfo GetCollectSchemaInfo();
|
||||
DataTable GetHostList(bool bDBQueryCheck = false);
|
||||
DataTable GetUserList(bool bDBQueryCheck = false);
|
||||
|
||||
bool ExecuteNonQuery(SqlCommand cmd);
|
||||
bool ExecuteNonCommandQuery(SqlCommand cmd);
|
||||
bool ExecuteNonStreamQuery(SqlCommand cmd);
|
||||
|
||||
SqlDataReader QueryDatabase(string strSQL);
|
||||
SqlDataReader QueryDatabaseSub(string strSQL);
|
||||
SqlDataReader QueryCommandDatabase(string strSQL, bool bUseTransaction = false);
|
||||
SqlDataReader QueryStreamDatabase(string strSQL);
|
||||
|
||||
DataTable QueryDataTable(string strSQL);
|
||||
DataTable QueryDataTable(string strSQL, out bool bHasRows);
|
||||
DataTable QueryDataTable(string strSQL, out int iRecordsAffected);
|
||||
DataTable QueryDataTable(string strSQL, out bool bHasRows, out int iRecordsAffected);
|
||||
DataSet QueryDataSet(string strSQL);
|
||||
DataSet QueryDataSet(string strSQL, out bool bHasRows);
|
||||
DataSet QueryDataSet(string strSQL, out int iRecordsAffected);
|
||||
DataSet QueryDataSet(string strSQL, out bool bHasRows, out int iRecordsAffected);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,112 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static SystemX.Net.Platform.Common.Util.LogMessage;
|
||||
//using MySql.Data.MySqlClient;
|
||||
|
||||
namespace SystemX.Net.DB.LogProcess.DBType
|
||||
{
|
||||
public class MariaXDB
|
||||
{
|
||||
//private MySqlConnection sqlConnection;
|
||||
//private MySqlCommand sqlCommand;
|
||||
//private MySqlDataReader sqlDataReader;
|
||||
private DataSet sqlDataSet;
|
||||
private DataTable sqlDataTable;
|
||||
|
||||
private string m_strConnectionText;
|
||||
|
||||
private bool m_bConnect;
|
||||
|
||||
public bool CONNECT { get { return m_bConnect; } }
|
||||
|
||||
public MariaXDB(string strSetConnectionInfo)
|
||||
{
|
||||
//sqlConnection = null;
|
||||
//sqlCommand = null;
|
||||
//sqlDataReader = null;
|
||||
sqlDataSet = null;
|
||||
sqlDataTable = null;
|
||||
|
||||
m_strConnectionText = strSetConnectionInfo;
|
||||
|
||||
m_bConnect = false;
|
||||
}
|
||||
~MariaXDB()
|
||||
{
|
||||
ChkCloseConnect();
|
||||
}
|
||||
public void ChkCloseConnect()
|
||||
{
|
||||
if (m_bConnect)
|
||||
{
|
||||
m_bConnect = false;
|
||||
|
||||
/*
|
||||
if (sqlConnection != null)
|
||||
{
|
||||
sqlConnection.Close();
|
||||
sqlConnection.Dispose();
|
||||
sqlConnection = null;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
public bool ConnectDatabase()
|
||||
{
|
||||
ChkCloseConnect();
|
||||
|
||||
try
|
||||
{
|
||||
//sqlConnection = new MySqlConnection(m_strConnectionText);
|
||||
//sqlCommand.Connection = sqlConnection;
|
||||
|
||||
m_bConnect = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_bConnect = false;
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] ConnectDatabase failed. [SystemX.Net.DB.DBType : MariaXDB.ConnectDatabase]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return m_bConnect;
|
||||
}
|
||||
public DataSet Query(string strSetCommand, out int iRecordsAffect)
|
||||
{
|
||||
iRecordsAffect = 0;
|
||||
|
||||
sqlDataSet = null;
|
||||
|
||||
try
|
||||
{
|
||||
//sqlCommand.CommandText = strSetCommand;
|
||||
//sqlDataReader = sqlCommand.ExecuteReader();
|
||||
|
||||
//iRecordsAffect = sqlDataReader.RecordsAffected;
|
||||
|
||||
sqlDataTable = new DataTable();
|
||||
//sqlDataTable.Load(sqlDataReader);
|
||||
|
||||
sqlDataSet = new DataSet();
|
||||
sqlDataSet.Tables.Add(sqlDataTable);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
;// throw new XDBCommonQueryException("Execution failed for the statement.[SystemX.Net.DB : MariaDB|COMMON.Query]");
|
||||
|
||||
string strErrorMsg = e.Message;
|
||||
string strSetData = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>>");
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Message [" + strErrorMsg + "] Query failed. [SystemX.Net.DB.DBType : MariaXDB.Query]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
MessageOutput.ConsoleWrite(strSetData + @"! Command [" + strSetCommand + "] Query failed. [SystemX.Net.DB.DBType : MariaXDB.Query]", ConsoleColor.Red, LogMessageLevel.DEBUG);
|
||||
}
|
||||
|
||||
return sqlDataSet;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user