Beispiel #1
0
        public List <ListDataRow> sub(string table, Dictionary <string, string> pk)
        {
            SubTableSchema     subSchema = DataSourceComm.getSubTableSchema(table, _schema);
            List <ListDataRow> rows      = getSubTableRows(pk, subSchema);

            return(rows);
        }
Beispiel #2
0
        public void update(ListDataRow row)
        {
            //if (_isSourceTable)
            //    updateSourceTableRow(row);
            DsAdapterCustomer dbsa = new DsAdapterCustomer(_schema);

            if (DataSourceComm.isNewRow(row))
            {
                dbsa.insert(row, this.getQueryParams(_schema.InsertCommand));
            }
            else
            {
                dbsa.update(row, this.getQueryParams(_schema.UpdateCommand));
            }
        }
Beispiel #3
0
        public List <ListDataRow> rows()
        {
            List <ListDataRow> ret = new List <ListDataRow>();
            DataSet            ds  = getDataSet();
            DataTable          tb  = ds.Tables[0];

            if (tb == null)
            {
                return(ret);
            }

            int start = 0;
            int count = tb.Rows.Count;


            if (!_pagination.isStoreProcessPagination)
            {
                if (_pagination.page != 0 && _pagination.pageSize != 0)
                {
                    start = (_pagination.page - 1) * _pagination.pageSize;
                    count = (_pagination.page) * _pagination.pageSize;
                }
            }

            if (start < 0)
            {
                start = 0;
            }

            for (int r = start; r < count; r++)
            {
                if (r >= tb.Rows.Count)
                {
                    break;
                }
                DataRow dRow = tb.Rows[r];

                ListDataRow row = DataSourceComm.readRow(tb, _schema, dRow);
                ret.Add(row);
            }

            if (_pagination.isStoreProcessPagination)
            {
                this._ds = null;
            }

            return(ret);
        }
Beispiel #4
0
        private List <ListDataRow> getSubTableRows(Dictionary <string, string> pks, SubTableSchema subSchema)
        {
            DatabaseAdmin dba   = DatabaseAdmin.getInstance();
            DataSource    subDs = new DataSource(subSchema.Name);

            DataSourceSchema dss = subDs.getSchema();

            if (dss.SelectCommand.CommandType != CommandType.TableDirect)
            {
                throw new XException(string.Format(Lang.SubTableSelCommandTypeOnlyIsTable, subSchema.Name));
            }

            StringBuilder sb = new StringBuilder("select * from ");

            sb.Append(dss.SelectCommand.CommandText);
            sb.Append(" ");
            sb.Append(" where ");
            Hashtable ps = new Hashtable();

            for (int i = 0; i < subSchema.Fks.Count; i++)
            {
                string fk = subSchema.Fks[i];
                string pk = _schema.PrimaryKeys[i];
                sb.Append(fk);
                sb.Append("=@");
                sb.Append(pk);
                sb.Append(" and ");
                ps.Add("@" + pk, pks[pk].ToString());
            }
            sb.Remove(sb.Length - 5, 5);
            DbCommand cmd = dba.getSqlStringCommand(sb.ToString());

            foreach (string key in ps.Keys)
            {
                dba.addInParameter(cmd, key, DbType.String, ps[key]);
            }
            DataTable tb = dba.executeTable(cmd);

            List <ListDataRow> rows = new List <ListDataRow>();

            foreach (DataRow row in tb.Rows)
            {
                rows.Add(DataSourceComm.readRow(tb, dss, row));
            }
            return(rows);
        }
Beispiel #5
0
        private void updateSubTables(ListDataRow row, List <SubTable> subTables)
        {
            if (subTables == null || subTables.Count < 1)
            {
                return;
            }
            for (int c = 0; c < subTables.Count; c++)
            {
                string           subTable = subTables[c].Name;
                DataSourceSchema ds       = DataSourceSchemaContainer.Instance().GetItem(subTable);
                if (ds.SelectCommand.CommandType != CommandType.TableDirect)
                {
                    throw new XException(string.Format(Lang.SubTableSelCommandTypeOnlyIsTable, subTable));
                }

                SubTableSchema sds = DataSourceComm.getSubTableSchema(subTable, _schema);
                Dictionary <string, string> parametes = new Dictionary <string, string>();


                for (int i = 0; i < sds.Fks.Count; i++)
                {
                    string fk = sds.Fks[i];
                    parametes.Add("@" + fk, row[_schema.PrimaryKeys[i]]);
                }


                DsAdapter dsa = new DsAdapterCustomer(ds);

                List <ListDataRow> subRows = subTables[c].Rows;
                for (int i = 0; i < subRows.Count; i++)
                {
                    ListDataRow subRow = subRows[i];
                    if (DataSourceComm.isNewRow(subRow))
                    {
                        dsa.insert(subRow, parametes);
                    }
                    else
                    {
                        dsa.update(subRow, parametes);
                    }
                }
            }
        }
Beispiel #6
0
        public ListDataRow row(Dictionary <string, string> pk)
        {
            if (pk == null || pk.Count < 1)
            {
                throw new Exception(Lang.UpdateNoKey);
            }

            StringBuilder sb = new StringBuilder();

            foreach (string field in pk.Keys)
            {
                sb.Append(" and ");
                sb.Append(field);
                sb.Append("='");
                sb.Append(pk[field]);
                sb.Append("' ");
            }

            sb.Remove(0, 5);
            PaginationInfo pagin = new PaginationInfo();

            DsAdapterCustomer dsa = new DsAdapterCustomer(_schema);
            DataSet           ds  = dsa.getDataSet(getQueryParams(_schema.SelectCommand), sb.ToString(), null, null, pagin);

            if (ds.Tables.Count < 1)
            {
                return(null);
            }
            DataTable tb = ds.Tables[0];

            DataRow[] rows = tb.Select(sb.ToString());
            if (tb.Rows.Count < 1)
            {
                return(null);
            }
            ListDataRow ret = DataSourceComm.readRow(tb, _schema, rows[0]);

            return(ret);
        }