Ejemplo n.º 1
0
        void SetConnectionString(string connectionString)
        {
            if (State != ConnectionState.Closed)
            {
                throw new InvalidOperationException("Connection is not closed.");
            }

            this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString);
        }
Ejemplo n.º 2
0
		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;
		}
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 8
0
		public DB2ConnectionPool(DB2ConnectionSettings connectionSettings)
		{
			this.connectionSettings = connectionSettings;
			openFreeConnections = new ArrayList();
		}
Ejemplo n.º 9
0
		/// <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;
			}
		}
Ejemplo n.º 10
0
 public DB2ConnectionPool(DB2ConnectionSettings connectionSettings)
 {
     this.connectionSettings = connectionSettings;
     openFreeConnections     = new ArrayList();
 }
Ejemplo n.º 11
0
 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;
			}
		}
Ejemplo n.º 13
0
 private void SetConnectionString(string connectionString)
 {
     this.connectionSettings = DB2ConnectionSettings.GetConnectionSettings(connectionString);
 }