#If False Then *********************************************************************** * .netXpert DataAccess Component Version 1.0 * Written By Funnyfox * Last Comment 2001.11.4 *********************************************************************** #End If Imports System.Data Imports System.Data.SqlClient 'Imports System.EnterpriseServices ' Serviced Component ¸¦ È£ÃâÇϱâ À§ÇØ ¼±¾ðµÈ Namespce Imports System.Configuration.ConfigurationSettings 'Config File Á¤º¸(AppSettings °ª)¸¦ ¾ò±â À§ÇØ ¼±¾ðµÈ Namesapce Imports System.Runtime.InteropServices 'Interop Namespace '********************************************************************************** ' Transaction Áö¿øÀº Support ' COM+ ¼­ºñ½ºÀÇ »ý¼º¹®ÀÚ¿­À» Áö¿øÇÔ. Default => " "(space) ' JIT Activation Áö¿ø ' ClassInterface ´Â AutoDual ( COM+ Service Äֿܼ¡¼­ Interface ¸¦ º¼ ¼ö ÀÖµµ·Ï ) '********************************************************************************** Public Class DBAgent 'Connection Field Private m_Connection As SqlConnection 'Connection À» »ý¼ºÇÏ¿© Return Private Function MakeConnection(ByVal ConnectionString As String) As SqlConnection Dim sqlConn As SqlConnection Try sqlConn = New SqlConnection(ConnectionString) Catch Ex As Exception 'ErrorUtil.WriteExceptionIntoEventLog(Ex) Ex.ToString() End Try Return sqlConn End Function 'Connection String Property Property ConnectionString() As String Set(ByVal Value As String) m_Connection = MakeConnection(Value) End Set Get If m_Connection Is Nothing Then Return GetConnection().ConnectionString Else Return m_Connection.ConnectionString End If End Get End Property '************************************************************************************ ' Query ±¸¹®°ú ÇÔ²², µ¥ÀÌÅÍÅ×ÀÌºí ¸í°ú µ¥ÀÌÅ͸¦ ´ãÀ» µ¥ÀÌÅͼÂÀ» ÆÄ¶ó¸ÞÅÍ·Î ³Ñ°Ü, ' µ¥ÀÌÅͼ¿¡ µ¥ÀÌÅ͸¦ ä¿î´Ù '************************************************************************************ Public Overloads Function FillDataSet(ByVal strQuery As String, ByVal strAlias As String, ByRef dsDataSet As DataSet) As DataSet Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(strQuery, GetConnection()) Try sqlAdapter.Fill(dsDataSet, strAlias) Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return dsDataSet End Function '************************************************************************************ ' Query ±¸¹®°ú ÇÔ²², µ¥ÀÌÅÍÅ×À̺í¸íÀ» ³Ñ±â¸é ³»ºÎÀûÀ¸·Î µ¥ÀÌÅͼÂÀ» »ý¼º(Untyped) µÇµ¹¸°´Ù. '************************************************************************************ Public Overloads Function FillDataSet(ByVal strQuery As String, ByVal strAlias As String) As DataSet Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(strQuery, GetConnection()) Dim oDs As New DataSet() Try sqlAdapter.Fill(oDs, strAlias) Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return oDs End Function '************************************************************************************************** ' SPÀ̸§°ú µ¥ÀÌÅͼ ±×¸®°í µ¥ÀÌÅ͸¦ ä¿ï µ¥ÀÌÅÍÅ×À̺í¸í°ú ÆÄ¶ó¸ÞÅ͵éÀ» ³Ñ±â¸é(clsParam°´Ã¼), ' ÀÌ¿¡ ÇØ´çÇÏ´Â µ¥ÀÌÅ͸¦ µ¥ÀÌÅͼ¿¡ ä¿ö µÇµ¹¸°´Ù. '************************************************************************************************** Public Overloads Function FillDataSet(ByVal SPName As String, ByRef dsDataSet As DataSet, ByVal strAlias As String, ByVal ParamArray objParams() As clsParam) As DataSet Dim sqlComm As SqlCommand = New SqlCommand(SPName, GetConnection()) Dim oEachParams As clsParam Dim SqlAdapter As SqlDataAdapter = New SqlDataAdapter() Try sqlComm.CommandType = CommandType.StoredProcedure sqlComm.CommandText = SPName For Each oEachParams In objParams sqlComm.Parameters.Add(MakeParameter(oEachParams)) Next SqlAdapter.SelectCommand = sqlComm SqlAdapter.Fill(dsDataSet, strAlias) Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return dsDataSet End Function '************************************************************************************************** ' SPÀ̸§°ú µ¥ÀÌÅ͸¦ ä¿ï µ¥ÀÌÅÍÅ×À̺í¸í°ú ÆÄ¶ó¸ÞÅ͵éÀ» ³Ñ±â¸é(clsParam°´Ã¼), ' ÀÌ¿¡ ÇØ´çÇÏ´Â µ¥ÀÌÅ͸¦ µ¥ÀÌÅͼÂÀ» »õ·Î »ý¼ºÇÏ¿© ÀÌ °÷¿¡ ä¿ö µ¥ÀÌÅͼÂÀ» µÇµ¹¸°´Ù. '************************************************************************************************** Public Overloads Function FillDataSet(ByVal SPName As String, ByVal strAlias As String, ByVal ParamArray objParams() As clsParam) As DataSet Dim sqlComm As SqlCommand = New SqlCommand(SPName, GetConnection()) Dim oEachParams As clsParam Dim SqlAdapter As SqlDataAdapter = New SqlDataAdapter() Dim oDs As New DataSet() Try sqlComm.CommandType = CommandType.StoredProcedure sqlComm.CommandText = SPName For Each oEachParams In objParams sqlComm.Parameters.Add(MakeParameter(oEachParams)) Next SqlAdapter.SelectCommand = sqlComm SqlAdapter.Fill(oDs, strAlias) Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return oDs End Function '************************************************************************************************** ' Insert / update /delete Query ¹®ÀÌ ´ã±ä SP ¸¦ È£ÃâÇÒ¶§ »ç¿ëÇϸç, SP ¸í°ú ¿ä±¸µÇ´Â ÆÄ¶ó¸ÞÅ͵é(clsParam °´Ã¼) ' À» ÆÄ¶ó¸ÞÅÍ·Î ³Ñ±â¸é SP°¡ È£ÃâµÇ¸ç ÀÌ¿¡ µû¸¥ ½ÇÇàµÈ ·¹ÄÚµå °¹¼ö¸¦ µÇµ¹¸°´Ù. '************************************************************************************************** Public Overloads Function ExecuteSpNonQuery(ByVal SPName As String, ByVal ParamArray objParams() As clsParam) As Integer Dim sqlComm As SqlCommand = New SqlCommand(SPName, GetConnection()) Dim oEachParams As clsParam Dim intRet As Integer Try sqlComm.CommandType = CommandType.StoredProcedure sqlComm.CommandText = SPName For Each oEachParams In objParams sqlComm.Parameters.Add(MakeParameter(oEachParams)) Next sqlComm.Connection.Open() intRet = sqlComm.ExecuteNonQuery() If Not (sqlComm.Connection.State = ConnectionState.Closed) Then sqlComm.Connection.Close() Return intRet Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) Return 0 End Try End Function '************************************************************************************************** ' Insert / update /delete Query ¹®À» È£ÃâÇÒ¶§ »ç¿ëÇϸç ÀÌ¿¡ µû¸¥ ½ÇÇàµÈ ·¹ÄÚµå °¹¼ö¸¦ µÇµ¹¸°´Ù. '************************************************************************************************** Public Overloads Function ExecuteNonQuery(ByVal strQuery As String) As Integer Dim sqlComm As SqlCommand = New SqlCommand(strQuery, GetConnection()) Dim oEachParams As clsParam Dim intRet As Integer Try sqlComm.CommandType = CommandType.Text sqlComm.CommandText = strQuery sqlComm.Connection.Open() intRet = sqlComm.ExecuteNonQuery() If Not (sqlComm.Connection.State = ConnectionState.Closed) Then sqlComm.Connection.Close() Return intRet Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) Return 0 End Try End Function '************************************************************************************ ' SP ¸í°ú clsParam Object¸¦ ÅëÇØ »ý¼ºµÈ ÆÄ¶ó¸ÞÅÍ °´Ã¼¸¦ ÅëÇÏ¿© Äõ¸®¸¦ ½ÇÇà, ' DataReader ¸¦ µÇµ¹¸°´Ù. '************************************************************************************ Public Overloads Function ReturnDataReader(ByVal SPName As String, ByVal ParamArray objParams() As clsParam) As SqlDataReader Dim sqlComm As SqlCommand = New SqlCommand(SPName, GetConnection()) Dim oEachParams As clsParam Dim sqlReader As SqlDataReader Try sqlComm.CommandType = CommandType.StoredProcedure sqlComm.CommandText = SPName For Each oEachParams In objParams sqlComm.Parameters.Add(MakeParameter(oEachParams)) Next sqlComm.Connection.Open() 'DataReader °´Ã¼¸¸ close Çϸé ÀÌ¿¡ ÇØ´çÇÏ´Â Connection Àº ÀÚµ¿À¸·Î ´ÝÈù´Ù sqlReader = sqlComm.ExecuteReader(CommandBehavior.CloseConnection) Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return sqlReader End Function '************************************************************************************ ' Sql Query ±¸¹®À» ½ÇÇàÇÏ¿© ±× °á°ú¸¦ DataReader °´Ã¼¸¦ ÅëÇØ µÇµ¹¸°´Ù. '************************************************************************************ Public Overloads Function ReturnDataReader(ByVal strQuery As String) As SqlDataReader Dim sqlComm As SqlCommand = New SqlCommand() Dim sqlReader As SqlDataReader Try sqlComm.Connection = GetConnection() sqlComm.CommandType = CommandType.Text sqlComm.CommandText = strQuery sqlComm.Connection.Open() 'DataReader °´Ã¼¸¸ close Çϸé ÀÌ¿¡ ÇØ´çÇÏ´Â Connection Àº ÀÚµ¿À¸·Î ´ÝÈù´Ù sqlReader = sqlComm.ExecuteReader(CommandBehavior.CloseConnection) Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return sqlReader End Function '************************************************************************************ ' SP ¸í°ú clsParam Object¸¦ ÅëÇØ »ý¼ºµÈ ÆÄ¶ó¸ÞÅÍ °´Ã¼¸¦ ÅëÇÏ¿© SP¸¦ ½ÇÇà, ' ÆÄ¶ó¸ÞÅÍ Ä÷¢¼ÇÀ» µÇµ¹¸°´Ù(Return Value). '************************************************************************************ Public Function ReturnParameter(ByVal SPName As String, ByVal ParamArray objParams() As clsParam) As SqlParameterCollection Dim sqlComm As SqlCommand = New SqlCommand(SPName, GetConnection()) Dim oEachParams As clsParam Try sqlComm.CommandType = CommandType.StoredProcedure sqlComm.CommandText = SPName If Not (objParams Is Nothing) Then For Each oEachParams In objParams sqlComm.Parameters.Add(MakeParameter(oEachParams)) Next End If sqlComm.Connection.Open() sqlComm.ExecuteNonQuery() If Not (sqlComm.Connection.State = ConnectionState.Closed) Then sqlComm.Connection.Close() Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return sqlComm.Parameters End Function '************************************************************************************ ' SP ¸í°ú clsParam Object¸¦ ÅëÇØ »ý¼ºµÈ ÆÄ¶ó¸ÞÅÍ °´Ã¼¸¦ ÅëÇÏ¿© Äõ¸®¸¦ ½ÇÇà, ' Scalar °ªÀ» µÇµ¹¸°´Ù. '************************************************************************************ Public Overloads Function ReturnScalarValue(ByVal SPName As String, ByVal ParamArray objParams() As clsParam) As Object Dim sqlComm As SqlCommand = New SqlCommand(SPName, GetConnection()) Dim oEachParams As clsParam Dim objRet As Object Try sqlComm.CommandType = CommandType.StoredProcedure sqlComm.CommandText = SPName If Not (objParams Is Nothing) Then For Each oEachParams In objParams sqlComm.Parameters.Add(MakeParameter(oEachParams)) Next End If sqlComm.Connection.Open() objRet = sqlComm.ExecuteScalar() If Not (sqlComm.Connection.State = ConnectionState.Closed) Then sqlComm.Connection.Close() Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return objRet End Function Public Overloads Function ReturnScalarValue(ByVal strQuery As String) As Object '************************************************************************************ ' Query ±¸¹®À» ÅëÇÏ¿© Äõ¸®¸¦ ½ÇÇà,Scalar °ªÀ» µÇµ¹¸°´Ù. '************************************************************************************ Dim sqlComm As SqlCommand = New SqlCommand(strQuery, GetConnection()) Dim objRet As Object Try sqlComm.CommandType = CommandType.Text sqlComm.Connection.Open() objRet = sqlComm.ExecuteScalar() If Not (sqlComm.Connection.State = ConnectionState.Closed) Then sqlComm.Connection.Close() Catch Ex As Exception ErrorUtil.WriteExceptionIntoEventLog(Ex) End Try Return objRet End Function 'Connection °´Ã¼¸¦ µÇµ¹¸², m_Connection ÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ³»ºÎÀûÀ¸·Î m_Connection¿¡ Connection °´Ã¼¸¦ '»ý¼ºÇÏ¿© Assign. Private Function GetConnection() As SqlConnection If m_Connection Is Nothing Then m_Connection = MakeConnection(System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")) End If Return m_Connection End Function 'clsParam °´Ã¼¸¦ ÅëÇÏ¿© µé¾î¿Â ÆÄ¶ó¸ÞÅÍ °ü·Ã Á¤º¸¸¦ Åä´ë·Î ÇÏ¿© SqlParameter °´Ã¼¸¦ »ý¼ºÇÑ´Ù. Private Function MakeParameter(ByVal oParams As clsParam) As SqlParameter Dim MakedParameter As SqlParameter = New SqlParameter() With MakedParameter .ParameterName = oParams.ParamName .SqlDbType = oParams.ParamType .Size = oParams.ParamSize .Value = oParams.ParamValue .Direction = oParams.ParamDirection .Precision = oParams.ParamPrecision .Scale = oParams.ParamScale End With Return MakedParameter End Function End Class '*********************************************************** ' SqlCommand ÀÇ Parameter °´Ã¼ Á¤º¸¸¦ ´ã¾Æ³»±â À§ÇÑ Å¬·¡½º '*********************************************************** Public Class clsParam Private m_ParamName As String 'ÆÄ¶ó¸ÞÅÍ ¸í Private m_ParamType As SqlDbType 'ÆÄ¶ó¸ÞÅÍ ÇüŸÀÔ Private m_ParamSize As Integer 'ÆÄ¶ó¸ÞÅÍ »çÀÌÁî Private m_ParamValue As Object 'ÆÄ¶ó¸ÞÅÍ °ª Private m_ParamDirection As ParameterDirection ' ÆÄ¶ó¸ÞÅÍÀÇ Á¾·ù(input / output) Private m_ParamPrecision As Byte 'Precision Private m_ParamScale As Byte 'Scale ReadOnly Property ParamName() As String Get Return m_ParamName End Get End Property ReadOnly Property ParamType() As SqlDbType Get Return m_ParamType End Get End Property ReadOnly Property ParamSize() As Integer Get Return m_ParamSize End Get End Property ReadOnly Property ParamValue() As Object Get Return m_ParamValue End Get End Property ReadOnly Property ParamDirection() As ParameterDirection Get Return m_ParamDirection End Get End Property ReadOnly Property ParamScale() As Byte Get Return m_ParamPrecision End Get End Property ReadOnly Property ParamPrecision() As Byte Get Return m_ParamScale End Get End Property 'Scale °ú Precision Á¤º¸°¡ ÇÊ¿ä¾øÀ»¶§ »ç¿ë Public Sub New(ByVal ParamName As String, ByVal ParamType As SqlDbType, ByVal ParamSize As Integer, _ ByVal ParamValue As Object, ByVal ParamDirection As ParameterDirection) Me.m_ParamName = ParamName Me.m_ParamType = ParamType Me.m_ParamSize = ParamSize Me.m_ParamValue = ParamValue Me.m_ParamDirection = ParamDirection Me.m_ParamScale = 0 Me.m_ParamPrecision = 0 End Sub 'Scale °ú Presicion Á¤º¸°¡ ÇÊ¿ä¾øÀ¸¸ç, ¸ðµç ÆÄ¶ó¸ÞÅͰ¡ Input ŸÀÔÀ϶§ »ç¿ë Public Sub New(ByVal ParamName As String, ByVal ParamType As SqlDbType, ByVal ParamSize As Integer, _ ByVal ParamValue As Object) Me.m_ParamName = ParamName Me.m_ParamType = ParamType Me.m_ParamSize = ParamSize Me.m_ParamValue = ParamValue Me.m_ParamDirection = ParameterDirection.Input Me.m_ParamScale = 0 Me.m_ParamPrecision = 0 End Sub '¸ðµç ÆÄ¶ó¸ÞÅÍ Á¤º¸¸¦ ÀÔ·ÂÇØ¾ß ÇÒ °æ¿ì Public Sub New(ByVal ParamName As String, ByVal ParamType As SqlDbType, ByVal ParamSize As Integer, _ ByVal ParamValue As Object, ByVal ParamScale As Byte, ByVal ParamPrecision As Byte) Me.m_ParamName = ParamName Me.m_ParamType = ParamType Me.m_ParamSize = ParamSize Me.m_ParamValue = ParamValue Me.m_ParamDirection = ParameterDirection.Input Me.m_ParamScale = ParamScale Me.m_ParamPrecision = ParamPrecision End Sub End Class