Beispiel #1
0
        public static Hubble.Framework.Data.DataSet ToDataSet(List <Field> schema, List <Document> docs)
        {
            Hubble.Framework.Data.DataTable dt = new Hubble.Framework.Data.DataTable();

            foreach (Field field in  schema)
            {
                Hubble.Framework.Data.DataColumn col = new Hubble.Framework.Data.DataColumn(field.Name,
                                                                                            DataTypeConvert.GetClrType(field.DataType));
                dt.Columns.Add(col);
            }

            foreach (Document doc in docs)
            {
                Hubble.Framework.Data.DataRow row = dt.NewRow();

                foreach (FieldValue fv in doc.FieldValues)
                {
                    if (fv.Value == null)
                    {
                        row[fv.FieldName] = System.DBNull.Value;
                    }
                    else
                    {
                        Type type = DataTypeConvert.GetClrType(fv.Type);

                        if (fv.Type == DataType.TinyInt)
                        {
                            bool bitValue;

                            //check the bit data type of database
                            if (bool.TryParse(fv.Value, out bitValue))
                            {
                                if (bitValue)
                                {
                                    row[fv.FieldName] = (byte)1;
                                }
                                else
                                {
                                    row[fv.FieldName] = (byte)0;
                                }

                                continue;
                            }
                        }

                        row[fv.FieldName] =
                            System.ComponentModel.TypeDescriptor.GetConverter(type).ConvertFrom(fv.Value);
                    }
                }

                dt.Rows.Add(row);
            }

            Hubble.Framework.Data.DataSet ds = new Hubble.Framework.Data.DataSet();
            ds.Tables.Add(dt);
            return(ds);
        }
Beispiel #2
0
        public void Run()
        {
            Global.UserRightProvider.CanDo(Right.RightItem.Select);

            if (Parameters.Count < 2)
            {
                throw new ArgumentException("Parameter 1 is select statement before where. Parameter 2 - n is docids.");
            }

            string sql = Parameters[0];

            SFQL.Parse.SFQLParse sfqlParse = new Hubble.Core.SFQL.Parse.SFQLParse();
            sfqlParse.SyntaxAnalyse(sql);


            SFQL.SyntaxAnalysis.Select.Select select = sfqlParse.SFQLSentenceList[0].SyntaxEntity as
                                                       SFQL.SyntaxAnalysis.Select.Select;

            string tableName = select.SelectFroms[0].Name;

            Data.DBProvider dbProvider = Data.DBProvider.GetDBProvider(tableName);

            if (dbProvider == null)
            {
                throw new Data.DataException(string.Format("Invalid table:{0}", tableName));
            }

            List <Data.Field> fields;
            int allFieldsCount;

            sfqlParse.GetSelectFields(select, dbProvider, out fields, out allFieldsCount);

            Query.DocumentResultForSort[] docs = new Hubble.Core.Query.DocumentResultForSort[Parameters.Count - 1];

            for (int i = 1; i < Parameters.Count; i++)
            {
                docs[i - 1] = new Hubble.Core.Query.DocumentResultForSort(int.Parse(Parameters[i]));
            }

            List <Data.Document> docResult = dbProvider.Query(fields, docs);

            Hubble.Framework.Data.DataSet ds = Data.Document.ToDataSet(fields, docResult);
            ds.Tables[0].TableName = "Select_" + select.SelectFroms[0].Alias;
            _QueryResult.DataSet   = ds;
        }
Beispiel #3
0
 public QueryResult(Hubble.Framework.Data.DataSet dataSet)
 {
     DataSet = dataSet;
 }
Beispiel #4
0
 public QueryResult(string printMessage, Hubble.Framework.Data.DataSet dataSet)
 {
     _PrintMessages.Add(printMessage);
     DataSet = dataSet;
 }