Beispiel #1
0
        /// <summary>
        ///		执行查询,并返回查询所返回结果集的第一行第一列。忽略额外的行或列
        /// </summary>
        /// <returns></returns>
        public object ExecuteScalar()
        {
            PersistenceBroker  broker = PersistenceBroker.Instance();
            RelationalDatabase rdb    = broker.GetDatabaseCopy(this.DatabaseName);
            IDbCommand         cmd    = rdb.GetCommand();

            cmd.CommandText = this.BuildForQuery(cmd);
            DataTable dt = broker.ExecuteQuery(cmd, this.DatabaseName);

            if (dt.Rows.Count == 0)
            {
                return(null);
            }
            else
            {
                return(dt.Rows[0][0]);
            }
        }
Beispiel #2
0
        /// <summary>
        ///		执行查询,并返回查询结果集
        /// </summary>
        /// <returns>查询结果</returns>
        public DataTable Execute()
        {
            PersistenceBroker  broker = PersistenceBroker.Instance();
            RelationalDatabase rdb    = broker.GetDatabaseCopy(this.DatabaseName);
            IDbCommand         cmd    = rdb.GetCommand();

            cmd.CommandText = this.BuildForQuery(cmd);
            string cmdText = cmd.CommandText;

            if (rdb.Vendor == DatabaseVendor.Oracle)
            {
                int topInd = cmdText.IndexOf("Top");
                if (topInd != -1)
                {
                    cmdText = cmdText.Substring(0, topInd) + cmdText.Substring(topInd + 6);

                    //使用ORCALE添加rownum的方法重装SQL语句
                    cmdText = PersistenceBroker.AddOracleTopWhere(cmdText, this.Top);
                }
            }
            cmd.CommandText = cmdText;
            return(broker.ExecuteQuery(cmd, this.DatabaseName));
        }