コード例 #1
0
ファイル: TdsConnectionPool.cs プロジェクト: carrie901/mono
		public TdsConnectionPool GetConnectionPool (string connectionString, TdsConnectionInfo info)
		{
			TdsConnectionPool pool = (TdsConnectionPool) pools [connectionString];
			if (pool == null) {
				pools [connectionString] = new TdsConnectionPool (this, info);
				pool = (TdsConnectionPool) pools [connectionString];
			}
			return pool;
		}
コード例 #2
0
        public TdsConnectionPool GetConnectionPool(string connectionString, TdsConnectionInfo info)
        {
            TdsConnectionPool pool = (TdsConnectionPool)pools [connectionString];

            if (pool == null)
            {
                pools [connectionString] = new TdsConnectionPool(this, info);
                pool = (TdsConnectionPool)pools [connectionString];
            }
            return(pool);
        }
コード例 #3
0
ファイル: SqlConnection.cs プロジェクト: ItsVeryWindy/mono
		void Open ()
		{
			string serverName = string.Empty;
			if (state == ConnectionState.Open)
				throw new InvalidOperationException ("The Connection is already Open (State=Open)");

			if (connectionString == null || connectionString.Trim().Length == 0)
				throw new InvalidOperationException ("Connection string has not been initialized.");

			try {
				if (!pooling) {
					if(!ParseDataSource (dataSource, out port, out serverName))
						throw new SqlException(20, 0, "SQL Server does not exist or access denied.",  17, "ConnectionOpen (Connect()).", dataSource, parms.ApplicationName, 0);
					tds = new Tds80 (serverName, port, PacketSize, ConnectionTimeout, 0);
					tds.Pooling = false;
				}
				else {
					if(!ParseDataSource (dataSource, out port, out serverName))
						throw new SqlException(20, 0, "SQL Server does not exist or access denied.",  17, "ConnectionOpen (Connect()).", dataSource, parms.ApplicationName, 0);
					
					TdsConnectionInfo info = new TdsConnectionInfo (serverName, port, packetSize, ConnectionTimeout, minPoolSize, maxPoolSize, connectionLifeTime);
					pool = sqlConnectionPools.GetConnectionPool (connectionString, info);
					tds = pool.GetConnection ();
				}
			} catch (TdsTimeoutException e) {
				throw SqlException.FromTdsInternalException ((TdsInternalException) e);
			} catch (TdsInternalException e) {
				throw SqlException.FromTdsInternalException (e);
			}

			tds.TdsErrorMessage += new TdsInternalErrorMessageEventHandler (ErrorHandler);
			tds.TdsInfoMessage += new TdsInternalInfoMessageEventHandler (MessageHandler);

			if (!tds.IsConnected) {
				try {
					if (Credentials != null) {
						if (parms.User != String.Empty)
							throw new ArgumentException("UserID already specified");
						if (parms.PasswordSet)
							throw new ArgumentException("Password already specified");
						if (parms.DomainLogin != false)
							throw new ArgumentException("Cannot use credentials with DomainLogin");
						parms.User = Credentials.UserId;
						parms.Password = Credentials.Password;
					}
					tds.Connect (parms);
				} catch {
					if (pooling)
						pool.ReleaseConnection (tds);
					throw;
				}
			}

			disposed = false; // reset this, so using () would call Close ().
			ChangeState (ConnectionState.Open);
		}
コード例 #4
0
ファイル: SqlConnection.cs プロジェクト: ItsVeryWindy/mono
		void Close ()
		{
			if (transaction != null && transaction.IsOpen)
				transaction.Rollback ();

			if (dataReader != null || xmlReader != null) {
				if(tds != null) tds.SkipToEnd ();
				dataReader = null;
				xmlReader = null;
			}

			if (tds != null && tds.IsConnected) {
				if (pooling && tds.Pooling) {
					if (pool != null) {
						pool.ReleaseConnection (tds);
						pool = null;
					}
				} else {
					tds.Disconnect ();
				}
			}

			if (tds != null) {
				tds.TdsErrorMessage -= new TdsInternalErrorMessageEventHandler (ErrorHandler);
				tds.TdsInfoMessage -= new TdsInternalInfoMessageEventHandler (MessageHandler);
			}

			ChangeState (ConnectionState.Closed);
		}
コード例 #5
0
		public void Open () 
		{
			string serverName = "";
			if (connectionString == null || connectionString.Equals (""))
				throw new InvalidOperationException ("Connection string has not been initialized.");

			try {
				if (!pooling) {
					ParseDataSource (dataSource, out port, out serverName);
					tds = new Tds50 (serverName, port, PacketSize, ConnectionTimeout);
				}
				else {
					ParseDataSource (dataSource, out port, out serverName);
 					TdsConnectionInfo info = new TdsConnectionInfo (serverName, port, packetSize, ConnectionTimeout, minPoolSize, maxPoolSize);
					pool = sybaseConnectionPools.GetConnectionPool (connectionString, info);
					tds = pool.GetConnection ();
				}
			}
			catch (TdsTimeoutException e) {
				throw SybaseException.FromTdsInternalException ((TdsInternalException) e);
			}

			tds.TdsErrorMessage += new TdsInternalErrorMessageEventHandler (ErrorHandler);
			tds.TdsInfoMessage += new TdsInternalInfoMessageEventHandler (MessageHandler);

			if (!tds.IsConnected) {
				try {
					tds.Connect (parms);
					ChangeState (ConnectionState.Open);
					ChangeDatabase (parms.Database);
				}
				catch {
					if (pooling)
						pool.ReleaseConnection (tds);
					throw;
				}
			}
			else if (connectionReset) {
				// tds.ExecuteNonQuery ("EXEC sp_reset_connection"); FIXME
				ChangeState (ConnectionState.Open);
			}
		}
コード例 #6
0
                void Open () 
		{
			string serverName = "";
			if (connectionString == null)
				throw new InvalidOperationException ("Connection string has not been initialized.");

			try {
				if (!pooling) {
					if(!ParseDataSource (dataSource, out port, out serverName))
						throw new SqlException(20, 0, "SQL Server does not exist or access denied.",  17, "ConnectionOpen (Connect()).", dataSource, parms.ApplicationName, 0);
					tds = new Tds70 (serverName, port, PacketSize, ConnectionTimeout);
				}
				else {
					if(!ParseDataSource (dataSource, out port, out serverName))
						throw new SqlException(20, 0, "SQL Server does not exist or access denied.",  17, "ConnectionOpen (Connect()).", dataSource, parms.ApplicationName, 0);
					
 					TdsConnectionInfo info = new TdsConnectionInfo (serverName, port, packetSize, ConnectionTimeout, minPoolSize, maxPoolSize);
					pool = sqlConnectionPools.GetConnectionPool (connectionString, info);
					tds = pool.GetConnection ();
				}
			}
			catch (TdsTimeoutException e) {
				throw SqlException.FromTdsInternalException ((TdsInternalException) e);
			}

			tds.TdsErrorMessage += new TdsInternalErrorMessageEventHandler (ErrorHandler);
			tds.TdsInfoMessage += new TdsInternalInfoMessageEventHandler (MessageHandler);

			if (!tds.IsConnected) {
				try {
					tds.Connect (parms);
				}
				catch {
					if (pooling)
						pool.ReleaseConnection (tds);
					throw;
				}
			}

			/* Not sure ebout removing these 2 lines.
			 * The command that gets to the sql server is just
			 * 'sp_reset_connection' and it fails.
			 * Either remove them definitely or fix it
			else if (connectionReset)
				tds.ExecProc ("sp_reset_connection");
			*/
                        disposed = false; // reset this, so using () would call Close ().
			ChangeState (ConnectionState.Open);
		}