Exemplo n.º 1
0
 public void executeCommandSchema(CommandSchema commandSchema, ListDataRow row, Dictionary <string, string> realParams, bool refresh = false)
 {
     using (TransactionScope ts = new TransactionScope())
     {
         DbCommand cmd = getCommand(commandSchema);
         setCommandParamValue(cmd, realParams, row);
         if (refresh)
         {
             DataSet ds = dbAdmin.executeDateSet(cmd);
             refreshRow(ds, row);
         }
         else
         {
             dbAdmin.execNonQuery(cmd);
         }
         ts.Complete();
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// 获取过滤表单的输入组件定义
        /// </summary>
        /// <returns></returns>
        private DataSet updateSourceTableRow(ListDataRow row)
        {
            DatabaseAdmin dba = DatabaseAdmin.getInstance(_schema.ConnectionName);
            //            Database db = dba.Database;
            DbCommand cmd = null;

            cmd = dba.getSqlStringCommand(" update " + _schema.TableName);
            StringBuilder sb      = new StringBuilder();
            StringBuilder sbWhere = new StringBuilder();

            sb.Append(" update [");
            sb.Append(_schema.TableName);
            sb.Append("] set ");

            bool first = true;

            foreach (string field in row.Keys)
            {
                string paramName = "@" + field.Replace(' ', '_');


                FieldSchema fldSchema = null;
                if (field.StartsWith(XSqlBuilder.OLD_VERSION_PIX))
                {
                    string keyField = field.Replace(XSqlBuilder.OLD_VERSION_PIX, "");
                    fldSchema = _schema.Fields.GetItem(keyField);
                    sbWhere.Append(" and [");
                    sbWhere.Append(keyField);
                    sbWhere.Append("]=");
                    sbWhere.Append(paramName);
                }
                else
                {
                    fldSchema = _schema.Fields.GetItem(field);

                    if (readOnlyFields.Contains(field))
                    {
                        continue;
                    }

                    if (first)
                    {
                        first = false;
                    }
                    else
                    {
                        sb.Append(",");
                    }

                    sb.Append("[");
                    sb.Append(field);
                    sb.Append("]");
                    sb.Append("=");
                    sb.Append(paramName);
                }

                dba.addInParameter(cmd, paramName, fldSchema.DataType, string.IsNullOrEmpty(row[field]) ? null : row[field]);
            }

            sbWhere.Remove(0, 5);

            if (sbWhere.Length < 2)
            {
                throw new XException(Lang.UpdateNoKey);
            }

            sb.Append(" where ");
            sb.Append(sbWhere.ToString());
            cmd.CommandText = sb.ToString();
            return(dba.executeDateSet(cmd));
        }