예제 #1
0
        /// <summary>
        /// Adds a RIGHT JOIN clause.
        /// </summary>
        /// <param name="Select">The OracleSqlBuilderSelectCount instance.</param>
        /// <param name="TableAlias">The alias of the table.</param>
        /// <param name="ConditionStatement">The condition statment/s of the joined table.</param>
        /// <returns>The current instance of this class.</returns>
        public OracleSqlBuilderSelectCount SetRightJoin(OracleSqlBuilderSelectCount Select, string TableAlias, string ConditionStatement)
        {
            if (Select == null)
            {
                throw new ArgumentException("Select argument should not be null.");
            }
            string strQuery = Select.ToString();

            if (String.IsNullOrWhiteSpace(strQuery))
            {
                throw new ArgumentException("Select argument should not be empty.");
            }
            TableAlias = this._RemoveBackTick(TableAlias);
            if (String.IsNullOrWhiteSpace(TableAlias))
            {
                throw new ArgumentException("TableAlias argument should not be empty.");
            }
            ConditionStatement = this._RemoveBackTick(ConditionStatement);
            if (String.IsNullOrWhiteSpace(ConditionStatement))
            {
                throw new ArgumentException("Condition argument should not be empty.");
            }
            this._Joins.Add(String.Format("RIGHT JOIN (\n{0}\n) AS {1}\n\tON ({2})", this._AddTab(strQuery), this._EncloseBackTick(TableAlias), this._Name(ConditionStatement)));
            return(this);
        }
예제 #2
0
        /// <summary>
        /// Executes a query and returns a OracleSqlData instance.
        /// </summary>
        /// <param name="ConnectionString">The connection string.</param>
        /// <param name="SelectCount">The instance of OracleSqlBuilderSelectCount.</param>
        /// <returns>The instance of OracleSqlData.</returns>
        internal OracleSqlData Execute(string ConnectionString, OracleSqlBuilderSelectCount SelectCount)
        {
            if (String.IsNullOrWhiteSpace(ConnectionString))
            {
                throw new ArgumentNullException("Connection String argument should not be null.");
            }
            if (SelectCount == null)
            {
                throw new ArgumentNullException("Select argument should not be null.");
            }
            var watch = new Stopwatch();

            watch.Start();
            var data = new OracleSqlData();

            using (var cn = new OracleConnection()) {
                cn.ConnectionString = ConnectionString;
                try {
                    cn.Open();
                    using (var cmd = new OracleCommand()) {
                        cmd.Connection  = cn;
                        cmd.CommandText = SelectCount.ToString();
                        cmd.CommandType = CommandType.Text;
                        SelectCount.PrintQuery();
                        if (SelectCount.GetParameters().Count > 0)
                        {
                            foreach (var kvp in SelectCount.GetParameters())
                            {
                                cmd.Parameters.Add(new OracleParameter(kvp.Key, kvp.Value));
                            }
                            SelectCount.PrintParameters();
                        }
                        using (var da = new OracleDataAdapter()) {
                            da.SelectCommand = cmd;
                            try {
                                da.Fill(data.DataSetResult);
                                data.DataTableResult = data.DataSetResult.Tables[0];
                                data.DataViewResult  = data.DataTableResult.AsDataView();
                                data.RowCount        = Convert.ToInt64(data.DataTableResult.Rows[0][0]);
                                if (data.RowCount > 0)
                                {
                                    foreach (DataRow dr in data.DataTableResult.Rows)
                                    {
                                        Dictionary <string, object> dicRow = new Dictionary <string, object>();
                                        foreach (DataColumn dc in data.DataTableResult.Columns)
                                        {
                                            dicRow.Add(dc.ColumnName, dr[dc.ColumnName]);
                                        }
                                        data.ListResults.Add(dicRow);
                                    }
                                }
                            } catch (OracleException ex) {
                                Debug.WriteLine("An error occured while trying to execute the query.");
                                Debug.WriteLine(String.Format("OracleSQL Error: {0} - {1}", ex.ErrorCode, ex.Message));
                                Debug.WriteLine(ex);
                                if (OracleSqlConfig.ThrowExceptions)
                                {
                                    throw;
                                }
                            } catch (Exception ex) {
                                Debug.WriteLine("An error occured while trying to execute the query.");
                                Debug.WriteLine(String.Format("Error: {0}", ex.Message));
                                Debug.WriteLine(ex);
                                if (OracleSqlConfig.ThrowExceptions)
                                {
                                    throw;
                                }
                            }
                        }
                    }
                } catch (OracleException ex) {
                    Debug.WriteLine("Unable to connect to the specified OracleSQL host.");
                    Debug.WriteLine(String.Format("OracleSQL Error: {0} - {1}", ex.ErrorCode, ex.Message));
                    Debug.WriteLine(ex);
                    if (OracleSqlConfig.ThrowExceptions)
                    {
                        throw;
                    }
                } catch (Exception ex) {
                    Debug.WriteLine("Unable to connect to the specified OracleSQL host.");
                    Debug.WriteLine(String.Format("Error: {0}", ex.Message));
                    Debug.WriteLine(ex);
                    if (OracleSqlConfig.ThrowExceptions)
                    {
                        throw;
                    }
                } finally {
                    if (cn != null && cn.State == ConnectionState.Open)
                    {
                        cn.Close();
                    }
                }
            }
            watch.Stop();
            data.Duration = watch.Elapsed;
            this._PrintRowsFound(data.RowCount);
            this._PrintDuration(data.Duration);
            return(data);
        }