From: Richard B. <rb...@us...> - 2005-02-07 13:22:17
|
Update of /cvsroot/jcframework/dotnet/Providers/AF_Informix In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12639/Providers/AF_Informix Modified Files: AF_Informix.vbproj CInformixConnection.vb CInformixDatabase.vb Log Message: Completed first attempt at informix provider (untested). Upgraded MySQL provider to official 1.0.4 release Index: CInformixDatabase.vb =================================================================== RCS file: /cvsroot/jcframework/dotnet/Providers/AF_Informix/CInformixDatabase.vb,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- CInformixDatabase.vb 7 Feb 2005 07:37:36 -0000 1.1 +++ CInformixDatabase.vb 7 Feb 2005 13:22:06 -0000 1.2 @@ -1,20 +1,20 @@ Option Strict Off Option Explicit On -Imports System.Data.SqlClient +Imports IBM.Data.Informix Imports AToMSFramework '''----------------------------------------------------------------------------- ''' Project : AToMSFramework -''' Class : CMsSqlDatabase +''' Class : CInformixDatabase ''' '''----------------------------------------------------------------------------- ''' <summary> -''' Implementation of CRelationalDatabase for Microsoft SQL Server. +''' Implementation of CRelationalDatabase for IBM Informix Servers. ''' </summary> ''' <remarks>This class contains the specific functionality required for the -''' framework to interact with Microsoft SQL databases.</remarks> +''' framework to interact with Informix databases.</remarks> ''' <history> -''' [rbanks] 11/12/2003 Created +''' [rbanks] 08-Feb-2005 Created ''' </history> '''----------------------------------------------------------------------------- Public Class CInformixDatabase @@ -24,13 +24,15 @@ Private m_user As String Private m_password As String Private m_serverName As String + Private m_host As String + Private m_service As String '''----------------------------------------------------------------------------- ''' <summary> ''' Establishes a new database connection. ''' </summary> - ''' <returns>A CMSSqlConnection containing the newly established connection.</returns> - ''' <remarks>The CMSSqlConnection class implements the _CConnection interface which + ''' <returns>A CInformixConnection containing the newly established connection.</returns> + ''' <remarks>The CInformixConnection class implements the _CConnection interface which ''' is required by this method. ''' <para>If the connection cannot be established an exception will be thrown.</para> ''' <para>The connection is established using normal SQL server authentication (ie @@ -41,7 +43,7 @@ '''----------------------------------------------------------------------------- Public Overrides Function getNewConnection() As _CConnection Dim conn As New CInformixConnection - conn.Connection = New SqlConnection + conn.Connection = New IfxConnection conn.ManageTransactions = True Try If m_user Is Nothing OrElse m_user.Length = 0 Then @@ -50,29 +52,23 @@ Dim pbroker As CPersistenceBroker pbroker = getPersistenceBrokerInstance() pbroker.GetLoginDetails(Me, m_user, m_password) - End If - If m_user = "SSPI" Then - conn.Connection.ConnectionString = _ - "Data Source=" & m_serverName & ";" & _ - "Initial Catalog=" & m_name & ";" & _ - "Integrated Security=SSPI;" & _ - "Persist Security Info=False;" - Else - conn.Connection.ConnectionString = _ - "Data Source=" & m_serverName & ";" & _ - "Initial Catalog=" & m_name & ";" & _ - "Integrated Security=false;" & _ - "Persist Security Info=False;" & _ - "User Id=" & m_user & ";" & _ - "Password=" & m_password - End If - conn.Connection.Open() - Catch ex As SqlClient.SqlException - Throw New DatabaseConnectionException(ex.Message, ex) - Catch ex As Exception - Throw New DatabaseConnectionException(ex.Message, ex) - End Try - getNewConnection = conn + End If + If m_service = String.Empty Then m_service = "8080" + conn.Connection.ConnectionString = _ + "Server=" & m_serverName & ";" & _ + "Database=" & m_name & ";" & _ + "Host=" & m_host & ";" & _ + "Protocol=onsoctcp;" & _ + "Service=" & m_service & ";" & _ + "uid=" & m_user & ";" & _ + "Password=" & m_password + conn.Connection.Open() + Catch ex As IfxException + Throw New DatabaseConnectionException(ex.Message, ex) + Catch ex As Exception + Throw New DatabaseConnectionException(ex.Message, ex) + End Try + getNewConnection = conn End Function '''----------------------------------------------------------------------------- @@ -98,7 +94,9 @@ Public Overrides Sub init(ByVal properties As System.Collections.Specialized.HybridDictionary) m_name = properties.Item("name") m_serverName = properties.Item("serverName") - m_user = properties.Item("user") + m_host = properties.Item("host") + m_service = properties.Item("service") + m_user = properties.Item("user") m_password = properties.Item("password") If properties.Item("ansinulls") Is Nothing Then UseANSINulls = False @@ -158,18 +156,11 @@ If dd = Date.MinValue Then tempRetorno = "NULL" Else - If dd.Date.Ticks = 0 Then - 'MSSQL doesn't support dates with years less than 1753, so time only - 'values that format to "0001-01-01 11:23:00" for example produce errors. - 'If it's just a time we will only return time portion. - tempRetorno = "'" & dd.ToString("HH:mm:ss") & "'" - Else - tempRetorno = "'" & dd.ToString("yyyy-MM-dd HH:mm:ss") & "'" - End If - End If + tempRetorno = "'" & dd.ToString("yyyy-MM-dd HH:mm:ss") & "'" + End If - System.Threading.Thread.CurrentThread.CurrentCulture = OriginalCulture - System.Threading.Thread.CurrentThread.CurrentUICulture = OriginalCulture + System.Threading.Thread.CurrentThread.CurrentCulture = OriginalCulture + System.Threading.Thread.CurrentThread.CurrentUICulture = OriginalCulture Case VariantType.Boolean tempRetorno = IIf(tempValue, "1", "0") Case VariantType.Single, VariantType.Double, VariantType.Decimal, VariantType.Decimal @@ -195,11 +186,11 @@ '''----------------------------------------------------------------------------- Public Overrides Function getNextOIDAvalue() As Integer Dim rs As New DataSet - Dim da As New SqlDataAdapter - Dim cb As SqlCommandBuilder + Dim da As New IfxDataAdapter + Dim cb As IfxCommandBuilder Dim aValue As Integer Dim row As System.Data.DataRow - Dim p As SqlParameter + Dim p As IfxParameter Dim initvals() As Object = {1} Dim x As OIDException Dim conn As CInformixConnection @@ -207,8 +198,8 @@ conn.AutoCommit = False conn.startTransaction() Try - da.SelectCommand = New SqlCommand("select oidAValue from " & Me.OIDTable, conn.Connection, conn.Transaction) - cb = New SqlCommandBuilder(da) + da.SelectCommand = New IfxCommand("select oidAValue from " & Me.OIDTable, conn.Connection, conn.Transaction) + cb = New IfxCommandBuilder(da) da.Fill(rs, "oid") If rs.Tables(0).Rows.Count = 0 Then 'Seed with value = 1 @@ -221,19 +212,19 @@ da.Update(rs, "oid") da.Dispose() conn.commit() - Catch err As SqlException - conn.rollback() - x = New OIDException(err.Message, err) - Catch err As Exception - conn.rollback() - x = New OIDException(err.Message, err) - Finally - Me.freeConnection(conn) - If Not x Is Nothing Then - Throw x - End If - End Try - Return aValue + Catch err As IfxException + conn.rollback() + x = New OIDException(err.Message, err) + Catch err As Exception + conn.rollback() + x = New OIDException(err.Message, err) + Finally + Me.freeConnection(conn) + If Not x Is Nothing Then + Throw x + End If + End Try + Return aValue End Function '''----------------------------------------------------------------------------- @@ -252,8 +243,8 @@ '''----------------------------------------------------------------------------- Public Overrides Function getIdentityValue(ByVal conn As _CConnection) As Integer Dim rs As New DataSet - Dim da As New SqlDataAdapter - Dim cb As SqlCommandBuilder + Dim da As New IfxDataAdapter + Dim cb As IfxCommandBuilder Dim aValue As Integer Dim connection As CInformixConnection @@ -261,8 +252,8 @@ connection.AutoCommit = False Try - da.SelectCommand = New SqlCommand("select @@IDENTITY", connection.Connection, connection.Transaction) - cb = New SqlCommandBuilder(da) + da.SelectCommand = New IfxCommand("select @@IDENTITY", connection.Connection, connection.Transaction) + cb = New IfxCommandBuilder(da) da.Fill(rs, "identity") If rs.Tables(0).Rows.Count = 0 Then Throw New IdentityValueException("Could not retrieve identity value") @@ -275,10 +266,10 @@ Debug.WriteLine("Returned Identity value: " & aValue.ToString) End If da.Dispose() - Catch err As SqlException - Throw New IdentityValueException(err.Message, err) - End Try - Return aValue + Catch err As IfxException + Throw New IdentityValueException(err.Message, err) + End Try + Return aValue End Function '''----------------------------------------------------------------------------- @@ -287,7 +278,7 @@ ''' </summary> ''' <param name="i">The number of the parameter being added</param> ''' <returns>A string containing the SQL parameter placeholder</returns> - ''' <remarks>Since the parameter is for an MSSQL connection only a the returned + ''' <remarks>Since the parameter is for an Informix connection only a the returned ''' string is in the format of @pxxx where xxx is the value of the input integer (i).</remarks> ''' <history> ''' [rbanks] 23/01/2004 Created Index: CInformixConnection.vb =================================================================== RCS file: /cvsroot/jcframework/dotnet/Providers/AF_Informix/CInformixConnection.vb,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- CInformixConnection.vb 7 Feb 2005 07:37:36 -0000 1.1 +++ CInformixConnection.vb 7 Feb 2005 13:22:06 -0000 1.2 @@ -1,16 +1,16 @@ -Imports System.Data.SqlClient +Imports IBM.Data.Informix Imports AToMSFramework '''----------------------------------------------------------------------------- ''' Project : AToMSFramework -''' Class : CMSSqlConnection +''' Class : CInformixConnection ''' '''----------------------------------------------------------------------------- ''' <summary> -''' Connection class for MSSql data sources +''' Connection class for Informix data sources ''' </summary> ''' <remarks><para>This class implements the <see cref="T:AToMSFramework._CConnection"/> interface and is used -''' to manage connections to MSSQL datasources.</para> +''' to manage connections to Informix datasources.</para> ''' <para>The following should be taken into consideration when using this ''' class:</para> ''' <para>1. Only one physical transaction runs on a database connection at any one time</para> @@ -19,6 +19,7 @@ ''' <para>3. If nested transactions are started, the commit or rollback only occurs on the ''' first transaction created. A rollback on any nested transaction will cause all ''' outside transactions to also roll back.</para> +''' <para>Built against client SDK version 2.81.TC3 ''' </remarks> ''' <seealso cref="T:AToMSFramework._CConnection"/> ''' <history> @@ -30,15 +31,15 @@ Implements IDisposable '************************************************** - 'Class: CMSSqlConnection + 'Class: CInformixConnection 'Author: Richard Banks '************************************************** - Private m_connection As InformixConnection + Private m_connection As IfxConnection Private m_autoCommit As Boolean Private m_started As Boolean Private m_manageTransactions As Boolean - Private m_transaction As sqlTransaction + Private m_transaction As IfxTransaction Private m_transactioncalls As Integer Private m_references As Integer Private m_db As _CRelationalDatabase @@ -47,7 +48,7 @@ '''----------------------------------------------------------------------------- ''' <summary> - ''' The actual SQL Server connection for the object. + ''' The actual Informix Server connection for the object. ''' </summary> ''' <value></value> ''' <remarks></remarks> @@ -55,426 +56,408 @@ ''' [rbanks] 1/12/2003 Created ''' </history> '''----------------------------------------------------------------------------- - Public Property Connection() As SqlConnection - Get - Connection = m_connection - End Get - Set(ByVal Value As SqlConnection) - m_connection = Value - End Set - End Property + Public Property Connection() As IfxConnection + Get + Connection = m_connection + End Get + Set(ByVal Value As IfxConnection) + m_connection = Value + End Set + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="P:AToMSFramework._CConnection.AutoCommit">_CConnection</see>. - ''' </summary> - ''' <value></value> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Property AutoCommit() As Boolean Implements _CConnection.AutoCommit - Get - AutoCommit = m_autoCommit - End Get - Set(ByVal Value As Boolean) - m_autoCommit = Value - End Set - End Property + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="P:AToMSFramework._CConnection.AutoCommit">_CConnection</see>. + ''' </summary> + ''' <value></value> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Property AutoCommit() As Boolean Implements _CConnection.AutoCommit + Get + AutoCommit = m_autoCommit + End Get + Set(ByVal Value As Boolean) + m_autoCommit = Value + End Set + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="P:AToMSFramework._CConnection.Started">_CConnection</see>. - ''' </summary> - ''' <value></value> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Property Started() As Boolean Implements _CConnection.Started - Get - Started = m_started - End Get - Set(ByVal Value As Boolean) - m_started = Value - End Set - End Property + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="P:AToMSFramework._CConnection.Started">_CConnection</see>. + ''' </summary> + ''' <value></value> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Property Started() As Boolean Implements _CConnection.Started + Get + Started = m_started + End Get + Set(ByVal Value As Boolean) + m_started = Value + End Set + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="P:AToMSFramework._CConnection.ManageTransactions">_CConnection</see>. - ''' </summary> - ''' <value></value> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Property ManageTransactions() As Boolean Implements _CConnection.ManageTransactions - Get - ManageTransactions = m_manageTransactions - End Get - Set(ByVal Value As Boolean) - m_manageTransactions = Value - End Set - End Property + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="P:AToMSFramework._CConnection.ManageTransactions">_CConnection</see>. + ''' </summary> + ''' <value></value> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Property ManageTransactions() As Boolean Implements _CConnection.ManageTransactions + Get + ManageTransactions = m_manageTransactions + End Get + Set(ByVal Value As Boolean) + m_manageTransactions = Value + End Set + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="M:AToMSFramework._CConnection.commit">_CConnection</see>. - ''' </summary> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Sub commit() Implements _CConnection.commit - If DEBUG_MODE Then - If m_transactioncalls = 1 Then - System.Diagnostics.Debug.WriteLine("COMMIT TRANSACTION") - Else - System.Diagnostics.Debug.WriteLine("Nested COMMIT TRANSACTION - not actually called") - End If - End If - If Me.ManageTransactions Then - If m_transactioncalls = 1 Then - m_transaction.Commit() - getPersistenceBrokerInstance().commitCache(Me.Database) - Me.Started = False - m_transaction = Nothing - End If - m_transactioncalls -= 1 - End If - End Sub + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="M:AToMSFramework._CConnection.commit">_CConnection</see>. + ''' </summary> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Sub commit() Implements _CConnection.commit + If DEBUG_MODE Then + If m_transactioncalls = 1 Then + System.Diagnostics.Debug.WriteLine("COMMIT TRANSACTION") + Else + System.Diagnostics.Debug.WriteLine("Nested COMMIT TRANSACTION - not actually called") + End If + End If + If Me.ManageTransactions Then + If m_transactioncalls = 1 Then + m_transaction.Commit() + getPersistenceBrokerInstance().commitCache(Me.Database) + Me.Started = False + m_transaction = Nothing + End If + m_transactioncalls -= 1 + End If + End Sub - '''----------------------------------------------------------------------------- - ''' <summary> - ''' The current transaction for the connection. - ''' </summary> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public ReadOnly Property Transaction() As SqlTransaction - Get - Transaction = m_transaction - End Get - End Property + '''----------------------------------------------------------------------------- + ''' <summary> + ''' The current transaction for the connection. + ''' </summary> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public ReadOnly Property Transaction() As IfxTransaction + Get + Transaction = m_transaction + End Get + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="M:AToMSFramework._CConnection.startTransaction">_CConnection</see>. - ''' </summary> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Overloads Sub startTransaction() Implements _CConnection.startTransaction - If DEBUG_MODE Then - If m_transactioncalls = 0 Then - System.Diagnostics.Debug.WriteLine("BEGIN TRANSACTION") - Else - System.Diagnostics.Debug.WriteLine("Nested BEGIN TRANSACTION - not actually called") - End If - End If - If Me.ManageTransactions Then - If Not Me.Started Then - m_transaction = m_connection.BeginTransaction - getPersistenceBrokerInstance().startCacheTransaction(Me.Database) - End If - m_transactioncalls += 1 - Me.Started = True - End If - End Sub + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="M:AToMSFramework._CConnection.startTransaction">_CConnection</see>. + ''' </summary> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Overloads Sub startTransaction() Implements _CConnection.startTransaction + If DEBUG_MODE Then + If m_transactioncalls = 0 Then + System.Diagnostics.Debug.WriteLine("BEGIN TRANSACTION") + Else + System.Diagnostics.Debug.WriteLine("Nested BEGIN TRANSACTION - not actually called") + End If + End If + If Me.ManageTransactions Then + If Not Me.Started Then + m_transaction = m_connection.BeginTransaction + getPersistenceBrokerInstance().startCacheTransaction(Me.Database) + End If + m_transactioncalls += 1 + Me.Started = True + End If + End Sub - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="M:AToMSFramework._CConnection.processStatement">_CConnection</see>. - ''' </summary> - ''' <param name="statement"></param> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' [rbanks] 23/01/2004 Changed to use SQL parameters - ''' </history> - '''----------------------------------------------------------------------------- - Public Sub processStatement(ByVal statement As CSqlStatement) Implements _CConnection.processStatement - Dim m_command As New SqlCommand - Dim m_recordcount As Integer - Dim cp As CSQLParameter - Dim param As SqlParameter - Dim dd As Date + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="M:AToMSFramework._CConnection.processStatement">_CConnection</see>. + ''' </summary> + ''' <param name="statement"></param> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' [rbanks] 23/01/2004 Changed to use SQL parameters + ''' </history> + '''----------------------------------------------------------------------------- + Public Sub processStatement(ByVal statement As CSqlStatement) Implements _CConnection.processStatement + Dim m_command As New IfxCommand + Dim m_recordcount As Integer + Dim cp As CSQLParameter + Dim param As IfxParameter + Dim dd As Date - Try - m_command.Connection = m_connection - m_command.CommandText = statement.SqlString - For Each cp In statement.Parameters - If Not cp.Ignore Then - param = New SqlParameter - param.ParameterName = cp.Name - param.SqlDbType = CType(cp.Column.ProviderType, SqlDbType) - If TypeOf (cp.Value) Is DateTime Then - dd = cp.Value - If dd.Ticks = 0 Then - dd = DateAdd(DateInterval.Year, 1899, dd) - Else - dd = New Date(dd.Year, dd.Month, dd.Day, dd.Hour, dd.Minute, dd.Second, 0) - End If - cp.Value = dd - End If - param.Value = cp.Value - m_command.Parameters.Add(param) - End If - Next - m_command.Transaction = m_transaction - Debug.WriteLine(m_command.CommandText) - m_recordcount = m_command.ExecuteNonQuery() - If m_recordcount = 0 Then - Throw New NothingUpdatedException("No records were affected by the update") - End If - Catch err As SqlException - Throw err - Catch err As Exception - Throw err - End Try - End Sub + Try + m_command.Connection = m_connection + m_command.CommandText = statement.SqlString + For Each cp In statement.Parameters + If Not cp.Ignore Then + param = New IfxParameter + param.ParameterName = cp.Name + param.IfxType = CType(cp.Column.ProviderType, IfxType) + param.Value = cp.Value + m_command.Parameters.Add(param) + End If + Next + m_command.Transaction = m_transaction + Debug.WriteLine(m_command.CommandText) + m_recordcount = m_command.ExecuteNonQuery() + If m_recordcount = 0 Then + Throw New NothingUpdatedException("No records were affected by the update") + End If + Catch err As IfxException + Throw err + Catch err As Exception + Throw err + End Try + End Sub - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="M:AToMSFramework._CConnection.processSelectStatement">_CConnection</see>. - ''' </summary> - ''' <param name="statement"></param> - ''' <returns></returns> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Function processSelectStatement(ByVal statement As CSqlStatement) As CResultset Implements _CConnection.processSelectStatement - SyncLock GetType(CInformixConnection) - Dim x As RetrieveException - Dim rs As New CResultset - Dim param As SqlParameter - Dim dd As Date - Dim m_command As New SqlCommand + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="M:AToMSFramework._CConnection.processSelectStatement">_CConnection</see>. + ''' </summary> + ''' <param name="statement"></param> + ''' <returns></returns> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Function processSelectStatement(ByVal statement As CSqlStatement) As CResultset Implements _CConnection.processSelectStatement + SyncLock GetType(CInformixConnection) + Dim x As RetrieveException + Dim rs As New CResultset + Dim param As IfxParameter + Dim dd As Date + Dim m_command As New IfxCommand - If DEBUG_MODE Then - System.Diagnostics.Debug.WriteLine(statement.SqlString) - End If + If DEBUG_MODE Then + System.Diagnostics.Debug.WriteLine(statement.SqlString) + End If - m_command.Connection = m_connection - m_command.CommandText = statement.SqlString - For Each cp As CSQLParameter In statement.Parameters - If Not cp.Ignore Then - param = New SqlParameter - param.ParameterName = cp.Name - param.SqlDbType = CType(cp.Column.ProviderType, SqlDbType) - If TypeOf (cp.Value) Is DateTime Then - dd = cp.Value - If dd.Ticks = 0 Then - dd = DateAdd(DateInterval.Year, 1899, dd) - Else - dd = New Date(dd.Year, dd.Month, dd.Day, dd.Hour, dd.Minute, dd.Second, 0) - End If - cp.Value = dd - End If - param.Value = cp.Value - m_command.Parameters.Add(param) - End If - Next + m_command.Connection = m_connection + m_command.CommandText = statement.SqlString + For Each cp As CSQLParameter In statement.Parameters + If Not cp.Ignore Then + param = New IfxParameter + param.ParameterName = cp.Name + param.IfxType = CType(cp.Column.ProviderType, IfxType) + param.Value = cp.Value + m_command.Parameters.Add(param) + End If + Next - Try - Dim m_adapter As New SqlDataAdapter(m_command) - If m_transactioncalls > 0 Then m_adapter.SelectCommand.Transaction = m_transaction - m_adapter.Fill(rs.ResultSet, "ole") - m_adapter.Dispose() - Catch err As SqlException - x = New RetrieveException("SQL Error: " & err.Message, err) - Catch err As Exception - x = New RetrieveException(err.Message, err) - End Try - If Not x Is Nothing Then - Throw x - End If - processSelectStatement = rs - End SyncLock - End Function + Try + Dim m_adapter As New IfxDataAdapter(m_command) + If m_transactioncalls > 0 Then m_adapter.SelectCommand.Transaction = m_transaction + m_adapter.Fill(rs.ResultSet, "ole") + m_adapter.Dispose() + Catch err As IfxException + x = New RetrieveException("SQL Error: " & err.Message, err) + Catch err As Exception + x = New RetrieveException(err.Message, err) + End Try + If Not x Is Nothing Then + Throw x + End If + processSelectStatement = rs + End SyncLock + End Function - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="M:AToMSFramework._CConnection.rollback">_CConnection</see>. - ''' </summary> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Sub rollback() Implements _CConnection.rollback - Dim pb As CPersistenceBroker - If DEBUG_MODE Then - If m_transactioncalls = 1 Then - System.Diagnostics.Debug.WriteLine("ROLLBACK TRANSACTION") - Else - System.Diagnostics.Debug.WriteLine("Nested ROLLBACK TRANSACTION - not actually performed") - End If - End If - If Me.ManageTransactions Then - If m_transactioncalls = 1 Then - Try - m_transaction.Rollback() - Catch ex As Exception - End Try - getPersistenceBrokerInstance().rollbackCache(Me.Database) - Me.Started = False - m_transaction = Nothing - End If - m_transactioncalls -= 1 - End If - End Sub + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="M:AToMSFramework._CConnection.rollback">_CConnection</see>. + ''' </summary> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Sub rollback() Implements _CConnection.rollback + Dim pb As CPersistenceBroker + If DEBUG_MODE Then + If m_transactioncalls = 1 Then + System.Diagnostics.Debug.WriteLine("ROLLBACK TRANSACTION") + Else + System.Diagnostics.Debug.WriteLine("Nested ROLLBACK TRANSACTION - not actually performed") + End If + End If + If Me.ManageTransactions Then + If m_transactioncalls = 1 Then + Try + m_transaction.Rollback() + Catch ex As Exception + End Try + getPersistenceBrokerInstance().rollbackCache(Me.Database) + Me.Started = False + m_transaction = Nothing + End If + m_transactioncalls -= 1 + End If + End Sub - Public Sub New() - MyBase.New() - 'By default we manage tranactions - 'For DB's that do not manage transactions we should - 'set this attribute to false - m_manageTransactions = True - m_references = 0 - End Sub + Public Sub New() + MyBase.New() + 'By default we manage tranactions + 'For DB's that do not manage transactions we should + 'set this attribute to false + m_manageTransactions = True + m_references = 0 + End Sub - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="M:AToMSFramework._CConnection.CloseConnection">_CConnection</see>. - ''' </summary> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Sub CloseConnection() Implements _CConnection.CloseConnection - m_references -= 1 - If m_references = 0 Then - m_connection.Close() - End If - End Sub + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="M:AToMSFramework._CConnection.CloseConnection">_CConnection</see>. + ''' </summary> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Sub CloseConnection() Implements _CConnection.CloseConnection + m_references -= 1 + If m_references = 0 Then + m_connection.Close() + End If + End Sub - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="P:AToMSFramework._CConnection.IsClosed">_CConnection</see>. - ''' </summary> - ''' <value></value> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public ReadOnly Property IsClosed() As Boolean Implements _CConnection.IsClosed - Get - Return m_connection.State = ConnectionState.Closed - End Get - End Property + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="P:AToMSFramework._CConnection.IsClosed">_CConnection</see>. + ''' </summary> + ''' <value></value> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public ReadOnly Property IsClosed() As Boolean Implements _CConnection.IsClosed + Get + Return m_connection.State = ConnectionState.Closed + End Get + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="P:AToMSFramework._CConnection.ReferenceCount">_CConnection</see>. - ''' </summary> - ''' <value></value> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Property ReferenceCount() As Integer Implements _CConnection.ReferenceCount - Get - Return m_references - End Get - Set(ByVal Value As Integer) - m_references = Value - End Set - End Property + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="P:AToMSFramework._CConnection.ReferenceCount">_CConnection</see>. + ''' </summary> + ''' <value></value> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Property ReferenceCount() As Integer Implements _CConnection.ReferenceCount + Get + Return m_references + End Get + Set(ByVal Value As Integer) + m_references = Value + End Set + End Property - '''----------------------------------------------------------------------------- - ''' <summary> - ''' See <see cref="P:AToMSFramework._CConnection.getTableSchema">_CConnection</see>. - ''' </summary> - ''' <param name="tName"></param> - ''' <returns></returns> - ''' <remarks></remarks> - ''' <history> - ''' [rbanks] 1/12/2003 Created - ''' </history> - '''----------------------------------------------------------------------------- - Public Function getTableSchema(ByVal tName As String) As System.Data.DataTable Implements _CConnection.getTableSchema - Dim statement As String - Dim cmd As SqlCommand - Dim dr As SqlDataReader - Dim dt As DataTable + '''----------------------------------------------------------------------------- + ''' <summary> + ''' See <see cref="P:AToMSFramework._CConnection.getTableSchema">_CConnection</see>. + ''' </summary> + ''' <param name="tName"></param> + ''' <returns></returns> + ''' <remarks></remarks> + ''' <history> + ''' [rbanks] 1/12/2003 Created + ''' </history> + '''----------------------------------------------------------------------------- + Public Function getTableSchema(ByVal tName As String) As System.Data.DataTable Implements _CConnection.getTableSchema + Dim statement As String + Dim cmd As IfxCommand + Dim dr As IfxDataReader + Dim dt As DataTable - statement = "select * from " & tName - Try - cmd = New SqlCommand(statement, Me.Connection) - dr = cmd.ExecuteReader(CommandBehavior.SchemaOnly) - dt = dr.GetSchemaTable - Catch ex As Exception - dt = Nothing - Throw ex - End Try - Return dt - End Function + statement = "select * from " & tName + Try + cmd = New IfxCommand(statement, Me.Connection) + dr = cmd.ExecuteReader(CommandBehavior.SchemaOnly) + dt = dr.GetSchemaTable + Catch ex As Exception + dt = Nothing + Throw ex + End Try + Return dt + End Function - Public Overloads Sub startTransaction(ByVal isolationLevel As System.Data.IsolationLevel) Implements _CConnection.startTransaction - If DEBUG_MODE Then - If m_transactioncalls = 0 Then - System.Diagnostics.Debug.WriteLine("BEGIN TRANSACTION") - Else - System.Diagnostics.Debug.WriteLine("Nested BEGIN TRANSACTION - not actually called") - End If - End If - If Me.ManageTransactions Then - If Not Me.Started Then - m_transaction = m_connection.BeginTransaction(isolationLevel) - getPersistenceBrokerInstance().startCacheTransaction(Me.Database) - End If - m_transactioncalls += 1 - Me.Started = True - End If - End Sub + Public Overloads Sub startTransaction(ByVal isolationLevel As System.Data.IsolationLevel) Implements _CConnection.startTransaction + If DEBUG_MODE Then + If m_transactioncalls = 0 Then + System.Diagnostics.Debug.WriteLine("BEGIN TRANSACTION") + Else + System.Diagnostics.Debug.WriteLine("Nested BEGIN TRANSACTION - not actually called") + End If + End If + If Me.ManageTransactions Then + If Not Me.Started Then + m_transaction = m_connection.BeginTransaction(isolationLevel) + getPersistenceBrokerInstance().startCacheTransaction(Me.Database) + End If + m_transactioncalls += 1 + Me.Started = True + End If + End Sub - Public Property Database() As _CRelationalDatabase Implements _CConnection.Database - Get - Return m_db - End Get - Set(ByVal Value As _CRelationalDatabase) - m_db = Value - End Set - End Property + Public Property Database() As _CRelationalDatabase Implements _CConnection.Database + Get + Return m_db + End Get + Set(ByVal Value As _CRelationalDatabase) + m_db = Value + End Set + End Property - Public Overloads Sub Dispose() Implements System.IDisposable.Dispose - Dispose(True) - GC.SuppressFinalize(Me) - End Sub + Public Overloads Sub Dispose() Implements System.IDisposable.Dispose + Dispose(True) + GC.SuppressFinalize(Me) + End Sub - Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean) - If Not m_disposed Then - If disposing Then - If Me.Started AndAlso Not m_transaction Is Nothing Then - m_transaction.Rollback() - m_transaction = Nothing - End If - If Not m_connection Is Nothing Then - m_connection.Close() - m_connection.Dispose() - m_connection = Nothing - End If - m_db = Nothing - m_disposed = True - End If - End If - End Sub + Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean) + If Not m_disposed Then + If disposing Then + If Me.Started AndAlso Not m_transaction Is Nothing Then + m_transaction.Rollback() + m_transaction = Nothing + End If + If Not m_connection Is Nothing Then + m_connection.Close() + m_connection.Dispose() + m_connection = Nothing + End If + m_db = Nothing + m_disposed = True + End If + End If + End Sub - Protected Overrides Sub Finalize() - ' Simply call Dispose(False). - Dispose(False) - End Sub + Protected Overrides Sub Finalize() + ' Simply call Dispose(False). + Dispose(False) + End Sub End Class Index: AF_Informix.vbproj =================================================================== RCS file: /cvsroot/jcframework/dotnet/Providers/AF_Informix/AF_Informix.vbproj,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- AF_Informix.vbproj 7 Feb 2005 07:37:36 -0000 1.1 +++ AF_Informix.vbproj 7 Feb 2005 13:22:06 -0000 1.2 @@ -1,107 +1,112 @@ -<VisualStudioProject> - <VisualBasic - ProjectType = "Local" - ProductVersion = "7.10.3077" - SchemaVersion = "2.0" - ProjectGuid = "{09659A30-0220-42BF-9478-267278E89692}" - > - <Build> - <Settings - ApplicationIcon = "" - AssemblyKeyContainerName = "" - AssemblyName = "AF_Informix" - AssemblyOriginatorKeyFile = "" - AssemblyOriginatorKeyMode = "None" - DefaultClientScript = "JScript" - DefaultHTMLPageLayout = "Grid" - DefaultTargetSchema = "IE50" - DelaySign = "false" - OutputType = "Library" - OptionCompare = "Binary" - OptionExplicit = "On" - OptionStrict = "Off" - RootNamespace = "AF_Informix" - StartupObject = "" - > - <Config - Name = "Debug" - BaseAddress = "285212672" - ConfigurationOverrideFile = "" - DefineConstants = "" - DefineDebug = "true" - DefineTrace = "true" - DebugSymbols = "true" - IncrementalBuild = "true" - Optimize = "false" - OutputPath = "bin\" - RegisterForComInterop = "false" - RemoveIntegerChecks = "false" - TreatWarningsAsErrors = "false" - WarningLevel = "1" - /> - <Config - Name = "Release" - BaseAddress = "285212672" - ConfigurationOverrideFile = "" - DefineConstants = "" - DefineDebug = "false" - DefineTrace = "true" - DebugSymbols = "false" - IncrementalBuild = "false" - Optimize = "true" - OutputPath = "bin\" - RegisterForComInterop = "false" - RemoveIntegerChecks = "false" - TreatWarningsAsErrors = "false" - WarningLevel = "1" - /> - </Settings> - <References> - <Reference - Name = "System" - AssemblyName = "System" - /> - <Reference - Name = "System.Data" - AssemblyName = "System.Data" - /> - <Reference - Name = "System.XML" - AssemblyName = "System.Xml" - /> - <Reference - Name = "AToMSFramework" - Project = "{8FFD05CF-E733-4D8E-BC0E-D9DD37B87384}" - Package = "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}" - /> - </References> - <Imports> - <Import Namespace = "Microsoft.VisualBasic" /> - <Import Namespace = "System" /> - <Import Namespace = "System.Collections" /> - <Import Namespace = "System.Data" /> - <Import Namespace = "System.Diagnostics" /> - </Imports> - </Build> - <Files> - <Include> - <File - RelPath = "AssemblyInfo.vb" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "CInformixConnection.vb" - SubType = "Code" - BuildAction = "Compile" - /> - <File - RelPath = "CInformixDatabase.vb" - SubType = "Code" - BuildAction = "Compile" - /> - </Include> - </Files> - </VisualBasic> -</VisualStudioProject> - +<VisualStudioProject> + <VisualBasic + ProjectType = "Local" + ProductVersion = "7.10.3077" + SchemaVersion = "2.0" + ProjectGuid = "{09659A30-0220-42BF-9478-267278E89692}" + > + <Build> + <Settings + ApplicationIcon = "" + AssemblyKeyContainerName = "" + AssemblyName = "AF_Informix" + AssemblyOriginatorKeyFile = "" + AssemblyOriginatorKeyMode = "None" + DefaultClientScript = "JScript" + DefaultHTMLPageLayout = "Grid" + DefaultTargetSchema = "IE50" + DelaySign = "false" + OutputType = "Library" + OptionCompare = "Binary" + OptionExplicit = "On" + OptionStrict = "Off" + RootNamespace = "AF_Informix" + StartupObject = "" + > + <Config + Name = "Debug" + BaseAddress = "285212672" + ConfigurationOverrideFile = "" + DefineConstants = "" + DefineDebug = "true" + DefineTrace = "true" + DebugSymbols = "true" + IncrementalBuild = "true" + Optimize = "false" + OutputPath = "bin\" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "false" + WarningLevel = "1" + /> + <Config + Name = "Release" + BaseAddress = "285212672" + ConfigurationOverrideFile = "" + DefineConstants = "" + DefineDebug = "false" + DefineTrace = "true" + DebugSymbols = "false" + IncrementalBuild = "false" + Optimize = "true" + OutputPath = "bin\" + RegisterForComInterop = "false" + RemoveIntegerChecks = "false" + TreatWarningsAsErrors = "false" + WarningLevel = "1" + /> + </Settings> + <References> + <Reference + Name = "System" + AssemblyName = "System" + /> + <Reference + Name = "System.Data" + AssemblyName = "System.Data" + /> + <Reference + Name = "System.XML" + AssemblyName = "System.Xml" + /> + <Reference + Name = "AToMSFramework" + Project = "{8FFD05CF-E733-4D8E-BC0E-D9DD37B87384}" + Package = "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}" + /> + <Reference + Name = "IBM.Data.Informix" + AssemblyName = "IBM.Data.Informix" + HintPath = "..\..\..\..\..\Program Files\Informix\Client-SDK\bin\IBM.Data.Informix.dll" + /> + </References> + <Imports> + <Import Namespace = "Microsoft.VisualBasic" /> + <Import Namespace = "System" /> + <Import Namespace = "System.Collections" /> + <Import Namespace = "System.Data" /> + <Import Namespace = "System.Diagnostics" /> + </Imports> + </Build> + <Files> + <Include> + <File + RelPath = "AssemblyInfo.vb" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "CInformixConnection.vb" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "CInformixDatabase.vb" + SubType = "Code" + BuildAction = "Compile" + /> + </Include> + </Files> + </VisualBasic> +</VisualStudioProject> + |