internal static void ExecScalar(string connid, string query, out VxColumnType coltype, out object result) { log.print(WvLog.L.Debug3, "ExecScalar {0}\n", query); try { using (var dbi = VxSqlPool.create(connid)) using (var qr = dbi.select(query)) { var ci = ProcessSchema(qr.columns); if (ci.Length == 0) { coltype = VxColumnType.String; result = ""; return; } coltype = ci[0].VxColumnType; var en = qr.GetEnumerator(); if (en.MoveNext()) result = en.Current[0].inner; else { coltype = VxColumnType.String; result = ""; } } } catch (DbException e) { throw new VxSqlException(e.Message, e); } }
public VxColumnInfo(string colname, VxColumnType vxcoltype, bool nullable, int size, short precision, short scale) { ColumnName = colname; VxColumnType = vxcoltype; Nullable = nullable; Size = size; Precision = precision; Scale = scale; }
static string VxColumnTypeToSignature(VxColumnType t) { switch (t) { case VxColumnType.Int64: return "x"; case VxColumnType.Int32: return "i"; case VxColumnType.Int16: return "n"; case VxColumnType.UInt8: return "y"; case VxColumnType.Bool: return "b"; case VxColumnType.Double: return "d"; case VxColumnType.Uuid: return "s"; case VxColumnType.Binary: return "ay"; case VxColumnType.String: return "s"; case VxColumnType.DateTime: return "(xi)"; case VxColumnType.Decimal: return "s"; default: throw new ArgumentException("Unknown VxColumnType"); } }
static void WriteV(WvDbusWriter w, VxColumnType t, object v) { switch (t) { case VxColumnType.Int64: w.Write((Int64)v); break; case VxColumnType.Int32: w.Write((Int32)v); break; case VxColumnType.Int16: w.Write((Int16)v); break; case VxColumnType.UInt8: w.Write((byte)v); break; case VxColumnType.Bool: w.Write((bool)v); break; case VxColumnType.Double: w.Write((double)v); break; case VxColumnType.Binary: w.Write((byte[])v); break; case VxColumnType.String: case VxColumnType.Decimal: case VxColumnType.Uuid: w.Write((string)v); break; case VxColumnType.DateTime: { var dt = (VxDbusDateTime)v; w.Write(dt.seconds); w.Write(dt.microseconds); break; } default: throw new ArgumentException("Unknown VxColumnType"); } }