void SetConnectionString(string connectionString) { if (State != ConnectionState.Closed) { throw new InvalidOperationException("Connection is not closed."); } this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString); }
public static DB2ConnectionSettings GetConnectionSettings(string connectionString) { DB2ConnectionPool pool = DB2ConnectionPool.FindConnectionPool(connectionString); if(pool != null) { return pool.ConnectionSettings; } DB2ConnectionSettings settings = new DB2ConnectionSettings(connectionString); if(settings.Pooling) { settings.pool = DB2ConnectionPool.GetConnectionPool(settings); } return settings; }
/// <summary> /// Get a connection pool. If it doesn't exist yet, create it /// </summary> /// <param name="connectionSettings"></param> /// <returns></returns> static public DB2ConnectionPool GetConnectionPool(DB2ConnectionSettings connectionSettings) { DB2Environment environment = DB2Environment.Instance; lock (environment.connectionPools.SyncRoot) { DB2ConnectionPool pool = (DB2ConnectionPool)environment.connectionPools[connectionSettings.ConnectionString]; if (pool == null) { pool = new DB2ConnectionPool(connectionSettings); environment.connectionPools.Add(connectionSettings.ConnectionString, pool); } return(pool); } }
public static DB2ConnectionSettings GetConnectionSettings(string connectionString) { DB2ConnectionPool pool = DB2ConnectionPool.FindConnectionPool(connectionString); if (pool != null) { return(pool.ConnectionSettings); } DB2ConnectionSettings settings = new DB2ConnectionSettings(connectionString); if (settings.Pooling) { settings.pool = DB2ConnectionPool.GetConnectionPool(settings); } return(settings); }
private string ConvertADONET2CLIConnString(DB2ConnectionSettings connectionSetting) { StringBuilder connStringBuilder = new StringBuilder(); connStringBuilder.AppendFormat("Database={0};", connectionSetting.DatabaseAlias); if (connectionSetting.Server.Contains(":")) { string[] serverAndPort = connectionSetting.Server.Split(':'); connStringBuilder.AppendFormat("Hostname={0};", serverAndPort[0]); connStringBuilder.AppendFormat("Port={0};", serverAndPort[1]); } else { connStringBuilder.AppendFormat("Hostname={0};", connectionSetting.Server); } connStringBuilder.AppendFormat("UID={0};", connectionSetting.UserName); connStringBuilder.AppendFormat("PWD={0};", connectionSetting.PassWord); connStringBuilder.AppendFormat("ConnectTimeout={0}", connectionSetting.ConnectTimeout.Seconds); return(connStringBuilder.ToString()); }
void SetConnectionString (string connectionString) { if (State != ConnectionState.Closed) throw new InvalidOperationException("Connection is not closed."); this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString); }
public DB2OpenConnection(DB2ConnectionSettings settings, DB2Connection connection) { this.settings = settings; try { short sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, out dbHandle); DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, "Unable to allocate database handle in DB2Connection.", connection); if (settings.Server.Length > 0) { StringBuilder outConnectStr = new StringBuilder(60); // TODO: ???? short numOutCharsReturned; sqlRet = DB2CLIWrapper.SQLDriverConnect(dbHandle, IntPtr.Zero, settings.ConnectionString, (short)settings.ConnectionString.Length, outConnectStr, (short)outConnectStr.Length, out numOutCharsReturned, DB2Constants.SQL_DRIVER_NOPROMPT /*SQL_DRIVER_COMPLETE*/); } else { sqlRet = DB2CLIWrapper.SQLConnect(dbHandle, settings.DatabaseAlias, (short)settings.DatabaseAlias.Length, settings.UserName, (short)settings.UserName.Length, settings.PassWord, (short)settings.PassWord.Length); DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, dbHandle, "Unable to connect to the database.", connection); } if ((settings.Pool == null) || (settings.Pool.databaseProductName == null)) { StringBuilder sb = new StringBuilder(256); short stringLength; sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_NAME*/ 17, sb, (short)(sb.Capacity / 2), out stringLength); new DB2ErrorCollection(DB2Constants.SQL_HANDLE_DBC, dbHandle).ToString(); if (sqlRet == 0) { databaseProductName = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2)); } sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_VER*/ 18, sb, (short)(sb.Capacity / 2), out stringLength); if (sqlRet == 0) { databaseVersion = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2)); try { string[] splitVersion = databaseVersion.Split('.'); majorVersion = int.Parse(splitVersion[0]); minorVersion = int.Parse(splitVersion[1]); } catch {} } if (settings.Pool != null) { settings.Pool.databaseProductName = databaseProductName; settings.Pool.databaseVersion = databaseVersion; settings.Pool.majorVersion = majorVersion; settings.Pool.minorVersion = minorVersion; } } else if (settings.Pool != null) { if (settings.Pool != null) { databaseProductName = settings.Pool.databaseProductName; databaseVersion = settings.Pool.databaseVersion; majorVersion = settings.Pool.majorVersion; minorVersion = settings.Pool.minorVersion; } } } catch { if (dbHandle != IntPtr.Zero) { DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_DBC, dbHandle); dbHandle = IntPtr.Zero; } throw; } }
public DB2ConnectionPool(DB2ConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; openFreeConnections = new ArrayList(); }
/// <summary> /// Get a connection pool. If it doesn't exist yet, create it /// </summary> /// <param name="connectionSettings"></param> /// <returns></returns> static public DB2ConnectionPool GetConnectionPool(DB2ConnectionSettings connectionSettings) { DB2Environment environment = DB2Environment.Instance; lock(environment.connectionPools.SyncRoot) { DB2ConnectionPool pool = (DB2ConnectionPool)environment.connectionPools[connectionSettings.ConnectionString]; if(pool == null) { pool = new DB2ConnectionPool(connectionSettings); environment.connectionPools.Add(connectionSettings.ConnectionString, pool); } return pool; } }
public DB2ConnectionPool(DB2ConnectionSettings connectionSettings) { this.connectionSettings = connectionSettings; openFreeConnections = new ArrayList(); }
public DB2OpenConnection(DB2ConnectionSettings connectionSetting, DB2Connection connection) { this.settings = connectionSetting; InternalOpen(ConvertADONET2CLIConnString(connectionSetting), connection); }
public DB2OpenConnection(DB2ConnectionSettings settings, DB2Connection connection) { this.settings = settings; try { short sqlRet = DB2CLIWrapper.SQLAllocHandle(DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, out dbHandle); DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, DB2Environment.Instance.penvHandle, "Unable to allocate database handle in DB2Connection.", connection); if(settings.Server.Length > 0) { StringBuilder outConnectStr = new StringBuilder(60); // TODO: ???? short numOutCharsReturned; sqlRet = DB2CLIWrapper.SQLDriverConnect(dbHandle, IntPtr.Zero, settings.ConnectionString, (short)settings.ConnectionString.Length, outConnectStr, (short)outConnectStr.Length, out numOutCharsReturned, DB2Constants.SQL_DRIVER_NOPROMPT /*SQL_DRIVER_COMPLETE*/); } else { sqlRet = DB2CLIWrapper.SQLConnect(dbHandle, settings.DatabaseAlias, (short)settings.DatabaseAlias.Length, settings.UserName, (short)settings.UserName.Length, settings.PassWord, (short)settings.PassWord.Length); DB2ClientUtils.DB2CheckReturn(sqlRet, DB2Constants.SQL_HANDLE_DBC, dbHandle, "Unable to connect to the database.", connection); } if((settings.Pool == null) || (settings.Pool.databaseProductName == null)) { StringBuilder sb = new StringBuilder(256); short stringLength; sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_NAME*/17, sb, (short)(sb.Capacity / 2), out stringLength); new DB2ErrorCollection(DB2Constants.SQL_HANDLE_DBC, dbHandle).ToString(); if(sqlRet == 0) databaseProductName = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2)); sqlRet = DB2CLIWrapper.SQLGetInfo(dbHandle, /*SQL_DBMS_VER*/18, sb, (short)(sb.Capacity / 2), out stringLength); if(sqlRet == 0) { databaseVersion = sb.ToString(0, Math.Min(sb.Capacity, stringLength / 2)); try { string[] splitVersion = databaseVersion.Split('.'); majorVersion = int.Parse(splitVersion[0]); minorVersion = int.Parse(splitVersion[1]); } catch{} } if(settings.Pool != null) { settings.Pool.databaseProductName = databaseProductName; settings.Pool.databaseVersion = databaseVersion; settings.Pool.majorVersion = majorVersion; settings.Pool.minorVersion = minorVersion; } } else if(settings.Pool != null) { if(settings.Pool != null) { databaseProductName = settings.Pool.databaseProductName; databaseVersion = settings.Pool.databaseVersion; majorVersion = settings.Pool.majorVersion; minorVersion = settings.Pool.minorVersion; } } } catch { if(dbHandle != IntPtr.Zero) { DB2CLIWrapper.SQLFreeHandle(DB2Constants.SQL_HANDLE_DBC, dbHandle); dbHandle = IntPtr.Zero; } throw; } }
private void SetConnectionString(string connectionString) { this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString); }