public bool Display(Command cmd, string columns, Locator locator) { SqlBuilder builder; if (cmd.wildcard == null) { builder = new SqlBuilder().SELECT.TOP(cmd.top).COLUMNS(columns).FROM(tname); if (locator != null) builder.WHERE(locator); } else { string where = LikeExpr(cmd.wildcard, cmd.Columns); if (locator != null) where = string.Format("({0}) AND ({1})", locator.Path, where); builder = new SqlBuilder().SELECT.COLUMNS(columns).FROM(tname).WHERE(where); } return Display(cmd, builder, tname, cmd.top); }
public void set(Command cmd) { if (cmd.HasHelp) { stdio.WriteLine("set assignment : update value by current table or locator"); stdio.WriteLine("set col1=val1, col2= val2 : update column by current table or locator"); stdio.WriteLine("set col[n1]=val1, col[n2]=val2 : update by row-id, n1,n2 is row-id"); stdio.WriteLine(" --use command type /r to display row-id"); return; } if (string.IsNullOrEmpty(cmd.args)) { stdio.ErrorFormat("argument cannot be empty"); return; } var pt = mgr.current; if (!(pt.Item is Locator) && !(pt.Item is TableName)) { stdio.ErrorFormat("table is not selected"); return; } Locator locator = mgr.GetCombinedLocator(pt); TableName tname = mgr.GetCurrentPath<TableName>(); SqlBuilder builder = new SqlBuilder().UPDATE(tname).SET(cmd.args); if (locator != null) { builder.WHERE(locator); } else if (mgr.Tout != null && mgr.Tout.TableName == tname && mgr.Tout.HasPhysloc) { try { var x = ParsePhysLocStatement(mgr.Tout.Table, cmd.args); if (x != null) builder = x; } catch (TieException) { stdio.ErrorFormat("invalid set assigment"); return; } catch (Exception ex2) { stdio.ErrorFormat(ex2.Message); return; } } try { int count = builder.SqlCmd.ExecuteNonQuery(); stdio.WriteLine("{0} of row(s) affected", count); } catch (Exception ex) { stdio.ErrorFormat(ex.Message); } }