Example #1
0
        /// <summary>
        /// 判断并构建指定行被指示的提交命令。
        /// </summary>
        /// <param name="Row">被提交的行。</param>
        /// <param name="rowSubmission">对该行的处理指示。</param>
        /// <returns></returns>
        private DbCommandBuilder RowSubmissionCommand(SpeedDataRow Row, DataRowSubmission rowSubmission)
        {
            if (rowSubmission == null)
            {
                return(null);
            }
            // 开始构建命令。
            DbCommandBuilder Command = new DbCommandBuilder();

            switch (rowSubmission.Submission)
            {
            case QuickDataChangerSubmission.Delete:
                if (rowSubmission.Conditions != null && rowSubmission.Conditions.Count > 0)
                {
                    Command.Delete(Row.Table.TableName).Where(rowSubmission.Conditions.ToArray());
                }
                break;

            case QuickDataChangerSubmission.Update:
                if (rowSubmission.Conditions != null && rowSubmission.Conditions.Count > 0)
                {
                    List <IDescription> expressions = new List <IDescription>();
                    foreach (SpeedDataColumn c in Row.Table.Columns)
                    {
                        if (!NotInsertFieldsContains(rowSubmission, c.Name))
                        {
                            expressions.Add(td.Field(c.Name) == Row[c.Name]);
                        }
                    }
                    Command.Update(Row.Table.TableName).Set(expressions.ToArray()).Where(rowSubmission.Conditions.ToArray());
                }
                break;

            case QuickDataChangerSubmission.Insert:
                List <FieldDescription> Fields = new List <FieldDescription>();
                List <object>           Values = new List <object>();
                foreach (SpeedDataColumn c in Row.Table.Columns)
                {
                    if (!NotInsertFieldsContains(rowSubmission, c.Name))
                    {
                        Fields.Add(td.Field(c.Name));
                        Values.Add(Row[c.Name]);
                    }
                }
                Command.Insert(fm.Table(Row.Table.TableName), Fields.ToArray()).Values(Values.ToArray());
                break;

            default:
                break;
            }
            return(Command);
        }
Example #2
0
        /// <summary>
        /// 指行指定的查询命令,并返回数据集。
        /// </summary>
        /// <param name="Command">要执行的查询。</param>
        /// <returns></returns>
        public SpeedDataTable ExecuteQuery(CommandBuilder Command)
        {
            IDataReader Rd = ExecuteReader(Command);

            if (Rd == null)
            {
                return(null);
            }
            SpeedDataTable dt = new SpeedDataTable();

            using (Rd)
            {
                string FieldName;
                int    i = 0;
                // 创建列集合。
                if (Rd.FieldCount > 0)
                {
                    for (; i < Rd.FieldCount; ++i)
                    {
                        FieldName = Rd.GetName(i);
                        dt.Columns.Add(FieldName, Rd.GetFieldType(i));
                    }
                }

                // 填充所有行。
                while (Rd.Read())
                {
                    SpeedDataRow Row = new SpeedDataRow(dt);
                    for (i = 0; i < Rd.FieldCount; ++i)
                    {
                        Row[i] = Rd.GetValue(i);
                    }
                    dt.Add(Row);
                }
                Rd.Close();
            }
            return(dt);
        }