예제 #1
0
파일: vxapi.cs 프로젝트: apenwarr/versaplex
    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);
        }
    }
예제 #2
0
 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;
 }
예제 #3
0
파일: vxapi.cs 프로젝트: apenwarr/versaplex
    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");
	}
    }
예제 #4
0
파일: vxapi.cs 프로젝트: apenwarr/versaplex
    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");
	}
    }