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(); } }
/// <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)); }