示例#1
0
        public void OpenDataReader(String query, out IDataReader readerRef,
            CommandBehavior behaviour, Boolean requiredTransaction, String procedureName,
            IDbDataParameter[] oleDbParameterArray, String conName)
        {
            IDbCommand mainCommand;
            try
            {
                if ((procedureName.Trim()).Length.IsZero())
                {
                    if ((query.Trim()).Length.IsZero())
                        throw new Exception("Query is blank");
                }

                switch (ProviderType)
                {
                    case Util.ConnectionLibrary.SQlClient:
                        mainCommand = new SqlCommand();
                        break;
                    case Util.ConnectionLibrary.Oledb:
                        mainCommand = new OleDbCommand();
                        break;
                    case Util.ConnectionLibrary.ODBC:
                        mainCommand = new OdbcCommand();
                        break;
                    default:
                        mainCommand = null;
                        break;
                }

                if (mainCommand.IsNull())
                {
                    readerRef = null;
                    return;
                }
                if (requiredTransaction.IsFalse())
                {
                    if (conName.Length > 0)
                    {
                        OpenConnection(conName);
                    }
                    else
                    {
                        OpenConnection(String.Empty);
                    }
                }
                else
                {
                    mainCommand.Transaction = transaction;
                }

                if ((procedureName.Trim()).Length.IsZero())
                {
                    mainCommand.CommandType = CommandType.Text;
                    mainCommand.CommandText = query;

                }
                else if (oleDbParameterArray.IsNull() && (procedureName.Trim()).Length > 0)
                {
                    mainCommand.CommandType = CommandType.StoredProcedure;
                    mainCommand.CommandText = procedureName;

                }
                else if (oleDbParameterArray.IsNotNull() && (procedureName.Trim()).Length > 0)
                {
                    mainCommand.CommandType = CommandType.StoredProcedure;
                    mainCommand.CommandText = procedureName;
                    for (Int32 i = 0; i < oleDbParameterArray.Length; i++)
                    {
                        if (oleDbParameterArray[i].IsNotNull())
                        {
                            mainCommand.Parameters.Add(oleDbParameterArray[i]);
                        }
                    }
                }
                else
                {
                    throw new Exception("Could Not Create the Command Object");
                }

                mainCommand.CommandTimeout = CommandTimeOutValue;

                mainCommand.Connection = disconnection;

                readerRef = mainCommand.ExecuteReader(behaviour);
            }
            catch (Exception ex)
            {
                CloseConnection();
                throw (ex);
            }
        }