/// <summary> /// Adds a parameter with the specified parameter name. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="dataType"> CUBRID Data Type. </param> /// <param name="size"> The size. </param> /// <returns> </returns> public CUBRIDParameter Add(string parameterName, CUBRIDDataType dataType, int size) { CUBRIDParameter parameter = new CUBRIDParameter(parameterName, dataType, size); int pos = Add(parameter); return(paramList[pos]); }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="cubridDataType"> CUBRID data type. </param> /// <param name="size"> The size. </param> /// <param name="sourceColumn"> The source column. </param> public CUBRIDParameter(string parameterName, CUBRIDDataType cubridDataType, int size, string sourceColumn) : this(parameterName, cubridDataType, size) { paramDirection = ParameterDirection.Input; paramSourceColumn = sourceColumn; paramSourceVersion = DataRowVersion.Current; }
internal void InferCollectionElementsType(CUBRIDDataType dataType) { int collectionType = (Convert.ToByte(dataType)) & (0x60); switch (collectionType) { case 0x00: type = dataType; break; case 0x20: type = CUBRIDDataType.CCI_U_TYPE_SET; break; case 0x40: type = CUBRIDDataType.CCI_U_TYPE_MULTISET; break; case 0x60: type = CUBRIDDataType.CCI_U_TYPE_SEQUENCE; break; default: type = CUBRIDDataType.CCI_U_TYPE_NULL; break; } }
private static string[] data_format(object[] value, CUBRIDDataType type) { switch (type) { case CUBRIDDataType.CCI_U_TYPE_TIME: case CUBRIDDataType.CCI_U_TYPE_TIMESTAMP: case CUBRIDDataType.CCI_U_TYPE_DATE: case CUBRIDDataType.CCI_U_TYPE_DATETIME: string[] date = (string[])value; for (int i = 0; i < date.Length; i++) { if (value[i] != null) { DateTime d = Convert.ToDateTime(date[i]); date[i] = string.Format("{0:u}", d); date[i] = date[i].Remove(date[i].Length - 1); } } break; case CUBRIDDataType.CCI_U_TYPE_OBJECT: string[] ob = new string[value.Length]; for (int i = 0; i < value.Length; i++) { if (value[i] != null) { ob[i] = value[i].ToString(); } } return(ob); } return((string[])value); }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="cubridDataType"> CUBRID data type. </param> /// <param name="dir"> The direction. </param> /// <param name="col"> The column. </param> /// <param name="ver"> The DataRow version. </param> /// <param name="val"> The value. </param> public CUBRIDParameter(string parameterName, CUBRIDDataType cubridDataType, ParameterDirection dir, string col, DataRowVersion ver, object val) { paramName = parameterName; CUBRIDDataType = cubridDataType; paramDirection = dir; paramSourceColumn = col; paramSourceVersion = ver; paramValue = val; //avoid calculate data types }
private static bool is_collection_type(CUBRIDDataType type) { if (type == CUBRIDDataType.CCI_U_TYPE_SET || type == CUBRIDDataType.CCI_U_TYPE_MULTISET || type == CUBRIDDataType.CCI_U_TYPE_SEQUENCE) { return(true); } else { return(false); } }
public CUBRIDArray(Object values) { if ((values is Object[]) && (((Object[])values).Length == 0)) baseType = CUBRIDDataType.CCI_U_TYPE_OBJECT; else baseType = Utils.GetObjArrBaseDBtype(values); if (baseType == CUBRIDDataType.CCI_U_TYPE_NULL) throw new ArgumentException(); internalArray = (Object[])((Object[])values).Clone(); length = ((Object[])values).Length; }
private static void SetDataTypeInfo(DataTable dsTable, string typeName, CUBRIDDataType cubridDataType, Type dataType, bool isAutoincrementable, bool isFixedLength, bool isFixedPrecisionScale, bool isLong, bool isNullable) { DataRow row = dsTable.NewRow(); row["TypeName"] = typeName; row["ProviderDataType"] = cubridDataType; row["DbType"] = dataType; row["IsAutoIncrementable"] = isAutoincrementable; row["IsFixedLength"] = isFixedLength; row["IsFixedPrecisionScale"] = isFixedPrecisionScale; row["IsLong"] = isLong; row["IsNullable"] = isNullable; dsTable.Rows.Add(row); }
private static void Test_InitParameter() { Object v = new Object(); DbType type = DbType.Byte; ParameterDirection dir = ParameterDirection.Input; DataRowVersion ver = DataRowVersion.Default; CUBRIDDataType cdt = CUBRIDDataType.CCI_U_TYPE_BIGINT; string sourceColumn = "driver"; int size = 10; bool isNullable = false; byte precision = 1; byte scale = 0; CUBRIDParameter p1 = new CUBRIDParameter(v); Debug.Assert(p1.Value == v); CUBRIDParameter p2 = new CUBRIDParameter(cdt); Debug.Assert(p2.CUBRIDDataType == cdt); CUBRIDParameter p3 = new CUBRIDParameter("cubrid", type, dir, "col", ver, v); Debug.Assert(p3.ParameterName == "cubrid"); CUBRIDParameter p4 = new CUBRIDParameter("cubrid", cdt, size); Debug.Assert(p4.Size == size); CUBRIDParameter p5 = new CUBRIDParameter("cubrid", cdt, size, sourceColumn); Debug.Assert(p5.SourceColumn == sourceColumn); CUBRIDParameter p6 = new CUBRIDParameter("cubrid", cdt, size, dir, isNullable, precision, scale, sourceColumn, ver, v); Debug.Assert(p6.SourceColumn == sourceColumn); CUBRIDParameter p7 = new CUBRIDParameter("cubrid", cdt, dir, "col", ver, v); Debug.Assert(p7.CUBRIDDataType == cdt); CUBRIDParameter p8 = p7.Clone(); Debug.Assert(p8.ToString() == p7.ToString()); }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="cubridDataType"> CUBRID data type. </param> /// <param name="size"> The size. </param> /// <param name="direction"> The direction. </param> /// <param name="isNullable"> If set to <c>true</c> is nullable. </param> /// <param name="precision"> The precision. </param> /// <param name="scale"> The scale. </param> /// <param name="sourceColumn"> The source column. </param> /// <param name="sourceVersion"> The source version. </param> /// <param name="value"> The parameter value. </param> public CUBRIDParameter(string parameterName, CUBRIDDataType cubridDataType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string sourceColumn, DataRowVersion sourceVersion, Object value ) { paramName = parameterName; CUBRIDDataType = cubridDataType; paramSize = size; paramDirection = direction; paramIsNullable = isNullable; Precision = precision; paramScale = scale; paramSourceColumn = sourceColumn; paramSourceVersion = sourceVersion; paramValue = value; //avoid calculate data types }
internal ColumnMetaData() { type = CUBRIDDataType.CCI_U_TYPE_UNKNOWN; scale = -1; precision = -1; realName = null; tableName = null; name = null; isNullable = false; defaultValue = null; isAutoIncrement = false; isUniqueKey = false; isPrimaryKey = false; isForeignKey = false; isReverseIndex = false; isReverseUnique = false; isShared = false; }
public CUBRIDArray(Object values) { if ((values is Object[]) && (((Object[])values).Length == 0)) { baseType = CUBRIDDataType.CCI_U_TYPE_OBJECT; } else { baseType = Utils.GetObjArrBaseDBtype(values); } if (baseType == CUBRIDDataType.CCI_U_TYPE_NULL) { throw new ArgumentException(); } internalArray = (Object[])((Object[])values).Clone(); length = ((Object[])values).Length; }
internal byte[] ConfirmType(CUBRIDDataType originalType) { byte[] typeInfo = new byte[2]; int collectionTypeOrNot = Convert.ToByte(originalType) & 0140; switch (collectionTypeOrNot) { case 0: typeInfo[0] = Convert.ToByte(originalType); typeInfo[1] = 0; return(typeInfo); case 040: typeInfo[0] = (byte)CUBRIDDataType.CCI_U_TYPE_SET; typeInfo[1] = (byte)(Convert.ToByte(originalType) & 037); return(typeInfo); case 0100: typeInfo[0] = (byte)CUBRIDDataType.CCI_U_TYPE_MULTISET; typeInfo[1] = (byte)(Convert.ToByte(originalType) & 037); return(typeInfo); case 0140: typeInfo[0] = (byte)CUBRIDDataType.CCI_U_TYPE_SEQUENCE; typeInfo[1] = (byte)(Convert.ToByte(originalType) & 037); return(typeInfo); default: typeInfo[0] = (byte)CUBRIDDataType.CCI_U_TYPE_NULL; typeInfo[1] = 0; break; } return(typeInfo); }
public static int cci_bind_param(CUBRIDConnection conn, int handle, int index, T_CCI_A_TYPE a_type, CUBRIDParameter param, CUBRIDDataType u_type, char flag) { int ret = 0; IntPtr p = IntPtr.Zero; switch (param.CUBRIDDataType) { case CUBRIDDataType.CCI_U_TYPE_DATE: case CUBRIDDataType.CCI_U_TYPE_TIME: case CUBRIDDataType.CCI_U_TYPE_DATETIME: case CUBRIDDataType.CCI_U_TYPE_TIMESTAMP: string date = param.Value.ToString(); if (param.Value.GetType() == typeof(DateTime)) { DateTime d = Convert.ToDateTime(param.Value); date = string.Format("{0:u}", d); date = date.Remove(date.Length - 1); } p = Marshal.StringToCoTaskMemAnsi(date); ret = bind_param(handle, index, a_type, p, u_type, flag); break; case CUBRIDDataType.CCI_U_TYPE_SET: case CUBRIDDataType.CCI_U_TYPE_MULTISET: case CUBRIDDataType.CCI_U_TYPE_SEQUENCE: IntPtr set = IntPtr.Zero; string[] value = data_format((object[])param.Value, param.InnerCUBRIDDataType); int[] indicator = new int[value.Length]; for (int i = 0; i < value.Length; i++) { if (value[i] != null) { indicator[i] = 0; } else { indicator[i] = 1; } } //CUBRIDDataType.CCI_U_TYPE_STRING or param.InnerCUBRIDDataType ret = cci_set_make(ref set, CUBRIDDataType.CCI_U_TYPE_STRING, value.Length, value, indicator); if (ret < 0) { return(ret); } ret = bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_SET, set, param.CUBRIDDataType, flag); cci_set_free(set); break; case CUBRIDDataType.CCI_U_TYPE_BLOB: CUBRIDBlob blob = (CUBRIDBlob)param.Value; bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_BLOB, blob.GetPackedLobHandle(), param.CUBRIDDataType, flag); break; case CUBRIDDataType.CCI_U_TYPE_CLOB: CUBRIDClob clob = (CUBRIDClob)param.Value; bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_CLOB, clob.GetPackedLobHandle(), param.CUBRIDDataType, flag); break; case CUBRIDDataType.CCI_U_TYPE_BIT: case CUBRIDDataType.CCI_U_TYPE_VARBIT: T_CCI_BIT bit = new T_CCI_BIT(); bit.size = ((byte[])param.Value).Length; bit.buf = Marshal.AllocHGlobal(bit.size); Marshal.Copy((byte[])param.Value, 0, bit.buf, bit.size); p = Marshal.AllocHGlobal(Marshal.SizeOf(bit)); Marshal.StructureToPtr(bit, p, false); ret = bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_BIT, p, param.CUBRIDDataType, flag); Marshal.FreeHGlobal(p); break; case CUBRIDDataType.CCI_U_TYPE_NULL: ret = bind_param(handle, index, a_type, IntPtr.Zero, u_type, flag); break; default: byte[] bind_value; // = param.Value.ToString(); if (conn.GetEncoding() != null) { bind_value = conn.GetEncoding().GetBytes(param.Value.ToString()); } else { bind_value = param.GetParameterEncoding().GetBytes(param.Value.ToString()); } ret = bind_param(handle, index, a_type, bind_value, u_type, flag); break; } return(ret); }
public static extern int bind_param(int mapped_stmt_id, int index, T_CCI_A_TYPE a_type, IntPtr value, CUBRIDDataType u_type, char flag);
private void SetCUBRIDDataTypeFromDbType() { switch (paramDbType) { case DbType.Int16: case DbType.UInt16: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case DbType.Int32: case DbType.UInt32: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_INT; break; case DbType.Int64: case DbType.UInt64: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; break; case DbType.String: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_STRING; break; case DbType.Single: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_FLOAT; break; case DbType.Double: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_DOUBLE; break; case DbType.Decimal: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NUMERIC; //TODO Verify mapping break; case DbType.Date: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_DATE; break; case DbType.Time: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_TIME; break; case DbType.DateTime: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_TIMESTAMP; break; case DbType.Boolean: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIT; break; case DbType.Currency: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_MONETARY; break; case DbType.StringFixedLength: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_CHAR; //TODO Verify mapping break; case DbType.Binary: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BLOB; break; case DbType.AnsiString: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_CLOB; break; case DbType.Byte: case DbType.SByte: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_VARBIT; break; case DbType.Object: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_OBJECT; break; case DbType.VarNumeric: paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SET; break; default: throw new Exception(Utils.GetStr(MsgId.DbTypeCantBeMappedToCUBRIDDataType)); } }
/// <summary> /// Sets the data types from value. /// </summary> private void SetDataTypesFromValue() { if (!inferDataTypesFromValue) return; if (paramValue == null || paramValue == DBNull.Value) { paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NULL; //this.paramDbType = DbType.Object; return; } if (paramValue is TimeSpan) { DbType = DbType.UInt64; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; return; } TypeCode typeCode = Type.GetTypeCode(paramValue.GetType()); switch (typeCode) { case TypeCode.Boolean: paramDbType = DbType.Boolean; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.SByte: paramDbType = DbType.SByte; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.Byte: paramDbType = DbType.Byte; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.Int16: paramDbType = DbType.Int16; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.UInt16: paramDbType = DbType.UInt16; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.Int32: paramDbType = DbType.Int32; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_INT; break; case TypeCode.UInt32: paramDbType = DbType.UInt32; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_INT; break; case TypeCode.Int64: paramDbType = DbType.Int64; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; break; case TypeCode.UInt64: paramDbType = DbType.UInt64; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; break; case TypeCode.DateTime: paramDbType = DbType.DateTime; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_DATETIME; break; case TypeCode.String: paramDbType = DbType.String; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_STRING; break; case TypeCode.Single: paramDbType = DbType.Single; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_FLOAT; break; case TypeCode.Double: paramDbType = DbType.Double; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_DOUBLE; break; case TypeCode.Decimal: paramDbType = DbType.Decimal; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NUMERIC; break; case TypeCode.Object: paramDbType = DbType.Object; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_OBJECT; break; case TypeCode.DBNull: //this.paramDbType = DbType.Object; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NULL; break; default: paramDbType = DbType.Object; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_OBJECT; break; } }
public CUBRIDArray(CUBRIDDataType type, int arrayLength) { baseType = type; length = arrayLength; if (length < 0) { return; } switch (type) { case CUBRIDDataType.CCI_U_TYPE_BIT: case CUBRIDDataType.CCI_U_TYPE_VARBIT: internalArray = (Object[])(new byte[length][]); break; case CUBRIDDataType.CCI_U_TYPE_SHORT: (new Int16[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_INT: (new int[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_BIGINT: (new long[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_FLOAT: (new float[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_DOUBLE: case CUBRIDDataType.CCI_U_TYPE_MONETARY: (new Double[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_NUMERIC: (new Decimal[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_DATE: (new DateTime[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_TIME: (new DateTime[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_TIMESTAMP: case CUBRIDDataType.CCI_U_TYPE_DATETIME: (new DateTime[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_CHAR: case CUBRIDDataType.CCI_U_TYPE_NCHAR: case CUBRIDDataType.CCI_U_TYPE_STRING: case CUBRIDDataType.CCI_U_TYPE_VARNCHAR: internalArray = (Object[])(new String[length]); break; case CUBRIDDataType.CCI_U_TYPE_OBJECT: internalArray = (Object[])(new CUBRIDOid[length]); break; case CUBRIDDataType.CCI_U_TYPE_BLOB: //TODO //internalArray = (Object[]) (new CUBRIDBlob[length]); break; case CUBRIDDataType.CCI_U_TYPE_CLOB: //TODO //internalArray = (Object[])(new CUBRIDClob[length]); break; default: baseType = CUBRIDDataType.CCI_U_TYPE_NULL; internalArray = new Object[length]; break; } }
public CUBRIDLobHandle(CUBRIDDataType lobType, byte[] packedLobHandle) { this.lobType = lobType; this.packedLobHandle = packedLobHandle; InitLob(); }
private static void TestNameToType() { CUBRIDDataType type = CUBRIDMetaData.NameToType("STRING"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_STRING == type); type = CUBRIDMetaData.NameToType("CHAR"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_CHAR == type); type = CUBRIDMetaData.NameToType("VARCHAR"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_VARNCHAR == type); type = CUBRIDMetaData.NameToType("DATE"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_DATE == type); type = CUBRIDMetaData.NameToType("DATETIME"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_DATETIME == type); type = CUBRIDMetaData.NameToType("TIME"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_TIME == type); type = CUBRIDMetaData.NameToType("TIMESTAMP"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_TIMESTAMP == type); type = CUBRIDMetaData.NameToType("NUMERIC"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_NUMERIC == type); type = CUBRIDMetaData.NameToType("DECIMAL"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_NUMERIC == type); type = CUBRIDMetaData.NameToType("SET"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_SET == type); type = CUBRIDMetaData.NameToType("MULTISET"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_MULTISET == type); type = CUBRIDMetaData.NameToType("SEQUENCE"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_SEQUENCE == type); type = CUBRIDMetaData.NameToType("SHORT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_SHORT == type); type = CUBRIDMetaData.NameToType("BIT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_BIT == type); type = CUBRIDMetaData.NameToType("VARBIT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_VARBIT == type); type = CUBRIDMetaData.NameToType("INT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_INT == type); type = CUBRIDMetaData.NameToType("BIGINT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_BIGINT == type); type = CUBRIDMetaData.NameToType("FLOAT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_FLOAT == type); type = CUBRIDMetaData.NameToType("DOUBLE"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_DOUBLE == type); type = CUBRIDMetaData.NameToType("BLOB"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_BLOB == type); type = CUBRIDMetaData.NameToType("CLOB"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_CLOB == type); type = CUBRIDMetaData.NameToType("MONETARY"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_MONETARY == type); type = CUBRIDMetaData.NameToType("NCHAR"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_NCHAR == type); type = CUBRIDMetaData.NameToType("VARNCHAR"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_VARNCHAR == type); type = CUBRIDMetaData.NameToType("ENUM"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_ENUM == type); type = CUBRIDMetaData.NameToType("OBJECT"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_OBJECT == type); type = CUBRIDMetaData.NameToType("UNKNOWN"); Debug.Assert(CUBRIDDataType.CCI_U_TYPE_UNKNOWN == type); }
/// <summary> /// Create a new LOB. /// </summary> /// <param name="lob_type"> The LOB type. </param> /// <returns> The packed LOB handle. </returns> public IntPtr LOBNew(CUBRIDDataType lob_type) { if (State == ConnectionState.Closed) { throw new CUBRIDException(Utils.GetStr(MsgId.TheConnectionIsNotOpen)); } IntPtr packedLobHandle = IntPtr.Zero; T_CCI_ERROR err = new T_CCI_ERROR(); if (lob_type == CUBRIDDataType.CCI_U_TYPE_BLOB) { int res = CciInterface.cci_blob_new(con_id, ref packedLobHandle, ref err); if (res < 0) { throw new CUBRIDException(err.err_code, err.err_msg); } } else if (lob_type == CUBRIDDataType.CCI_U_TYPE_CLOB) { int res = CciInterface.cci_clob_new(con_id, ref packedLobHandle, ref err); if (res < 0) { throw new CUBRIDException(err.err_code, err.err_msg); } } else { throw new ArgumentException(Utils.GetStr(MsgId.NotAValidLOBType)); } return packedLobHandle; }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="cubridDataType"> CUBRID Data Type. </param> public CUBRIDParameter(string parameterName, CUBRIDDataType cubridDataType) { paramName = parameterName; CUBRIDDataType = cubridDataType; }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="cubridDataType"> CUBRID data type. </param> /// <param name="size"> The size. </param> public CUBRIDParameter(string parameterName, CUBRIDDataType cubridDataType, int size) : this(parameterName, cubridDataType) { paramSize = size; }
/// <summary> /// Adds a parameter with the specified parameter name. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="dataType"> CUBRID Data Type. </param> /// <param name="size"> The size. </param> /// <returns> </returns> public CUBRIDParameter Add(string parameterName, CUBRIDDataType dataType, int size) { CUBRIDParameter parameter = new CUBRIDParameter(parameterName, dataType, size); int pos = Add(parameter); return paramList[pos]; }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="cubridDataType"> The CUBRID data type. </param> public CUBRIDParameter(CUBRIDDataType cubridDataType) { CUBRIDDataType = cubridDataType; }
private static string[] data_format(object[] value,CUBRIDDataType type) { switch (type) { case CUBRIDDataType.CCI_U_TYPE_TIME: case CUBRIDDataType.CCI_U_TYPE_TIMESTAMP: case CUBRIDDataType.CCI_U_TYPE_DATE: case CUBRIDDataType.CCI_U_TYPE_DATETIME: string[] date = (string[])value; for (int i = 0; i < date.Length; i++) { if (value[i] != null) { DateTime d = Convert.ToDateTime(date[i]); date[i] = string.Format("{0:u}", d); date[i] = date[i].Remove(date[i].Length - 1); } } break; case CUBRIDDataType.CCI_U_TYPE_OBJECT: string[] ob = new string[value.Length]; for (int i = 0; i < value.Length; i++) { if (value[i] != null) { ob[i] = value[i].ToString(); } } return ob; } return (string[])value; }
public static extern int cci_set_make(ref IntPtr set, CUBRIDDataType u_type, int size, string[] value, int[] indicator);
public static int cci_get_value(CUBRIDConnection con_handle, int col_no, CUBRIDDataType type, ref object val) { int req_handle = con_handle.Conection; IntPtr value = IntPtr.Zero; int indicator = 0, res = 0; switch (type) { case CUBRIDDataType.CCI_U_TYPE_BLOB: res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_BLOB, ref value, ref indicator); CUBRIDBlob blob = new CUBRIDBlob(value, con_handle); val = blob; break; case CUBRIDDataType.CCI_U_TYPE_CLOB: res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_CLOB, ref value, ref indicator); CUBRIDClob clob = new CUBRIDClob(value, con_handle); val = clob; break; case CUBRIDDataType.CCI_U_TYPE_INT: res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_STR, ref value, ref indicator); if (Marshal.PtrToStringAnsi(value) == null) { val = null; } else { val = Convert.ToInt32(Marshal.PtrToStringAnsi(value)); } break; case CUBRIDDataType.CCI_U_TYPE_BIGINT: res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_STR, ref value, ref indicator); val = Convert.ToInt64(Marshal.PtrToStringAnsi(value)); break; case CUBRIDDataType.CCI_U_TYPE_OBJECT: res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_STR, ref value, ref indicator); string oid = Marshal.PtrToStringAnsi(value); val = new CUBRIDOid(oid); break; case CUBRIDDataType.CCI_U_TYPE_BIT: T_CCI_BIT bit = new T_CCI_BIT(); res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_BIT, ref bit, ref indicator); byte[] data = new byte[bit.size]; for (int i = 0; i < bit.size; i++) { data[i] = Marshal.ReadByte(bit.buf, i); } val = new byte[bit.size]; Array.Copy(data, (byte[])val, bit.size); break; default: res = cci_get_data(req_handle, col_no, (int)T_CCI_A_TYPE.CCI_A_TYPE_STR, ref value, ref indicator); if (value != IntPtr.Zero) { if (con_handle.GetEncoding().Equals(Encoding.UTF8)) { Byte[] v = Encoding.Unicode.GetBytes(Marshal.PtrToStringUni(value)); int count = 0; while (count < v.Length && v[count] != 0) { count++; } if ((CUBRIDDataType)type == CUBRIDDataType.CCI_U_TYPE_VARBIT) { val = Enumerable.Range(0, count) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(Marshal.PtrToStringAnsi(value).Substring(x, 2), 16)) .ToArray(); } else { val = Encoding.Unicode.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, v, 0, count)); } } else { val = Marshal.PtrToStringAnsi(value); } } else { val = null; //String.Empty; } break; } return(res); }
/// <summary> /// Sets the data types from value. /// </summary> private void SetDataTypesFromValue() { if (!inferDataTypesFromValue) { return; } if (paramValue == null || paramValue == DBNull.Value) { paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NULL; //this.paramDbType = DbType.Object; return; } if (paramValue is TimeSpan) { DbType = DbType.UInt64; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; return; } TypeCode typeCode = Type.GetTypeCode(paramValue.GetType()); switch (typeCode) { case TypeCode.Boolean: paramDbType = DbType.Boolean; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.SByte: paramDbType = DbType.SByte; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.Byte: paramDbType = DbType.Byte; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.Int16: paramDbType = DbType.Int16; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.UInt16: paramDbType = DbType.UInt16; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_SHORT; break; case TypeCode.Int32: paramDbType = DbType.Int32; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_INT; break; case TypeCode.UInt32: paramDbType = DbType.UInt32; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_INT; break; case TypeCode.Int64: paramDbType = DbType.Int64; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; break; case TypeCode.UInt64: paramDbType = DbType.UInt64; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_BIGINT; break; case TypeCode.DateTime: paramDbType = DbType.DateTime; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_DATETIME; break; case TypeCode.String: paramDbType = DbType.String; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_STRING; break; case TypeCode.Single: paramDbType = DbType.Single; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_FLOAT; break; case TypeCode.Double: paramDbType = DbType.Double; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_DOUBLE; break; case TypeCode.Decimal: paramDbType = DbType.Decimal; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NUMERIC; break; case TypeCode.Object: paramDbType = DbType.Object; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_OBJECT; break; case TypeCode.DBNull: //this.paramDbType = DbType.Object; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_NULL; break; default: paramDbType = DbType.Object; paramCUBRIDDataType = CUBRIDDataType.CCI_U_TYPE_OBJECT; break; } }
internal byte[] ConfirmType(CUBRIDDataType originalType) { byte[] typeInfo = new byte[2]; int collectionTypeOrNot = Convert.ToByte(originalType) & 0140; switch (collectionTypeOrNot) { case 0: typeInfo[0] = Convert.ToByte(originalType); typeInfo[1] = 0; return typeInfo; case 040: typeInfo[0] = (byte) CUBRIDDataType.CCI_U_TYPE_SET; typeInfo[1] = (byte) (Convert.ToByte(originalType) & 037); return typeInfo; case 0100: typeInfo[0] = (byte) CUBRIDDataType.CCI_U_TYPE_MULTISET; typeInfo[1] = (byte) (Convert.ToByte(originalType) & 037); return typeInfo; case 0140: typeInfo[0] = (byte) CUBRIDDataType.CCI_U_TYPE_SEQUENCE; typeInfo[1] = (byte) (Convert.ToByte(originalType) & 037); return typeInfo; default: typeInfo[0] = (byte) CUBRIDDataType.CCI_U_TYPE_NULL; typeInfo[1] = 0; break; } return typeInfo; }
public static int cci_bind_param(CUBRIDConnection conn, int handle, int index, T_CCI_A_TYPE a_type, CUBRIDParameter param, CUBRIDDataType u_type, char flag) { int ret = 0; IntPtr p = IntPtr.Zero; switch (param.CUBRIDDataType) { case CUBRIDDataType.CCI_U_TYPE_DATE: case CUBRIDDataType.CCI_U_TYPE_TIME: case CUBRIDDataType.CCI_U_TYPE_DATETIME: case CUBRIDDataType.CCI_U_TYPE_TIMESTAMP: string date = param.Value.ToString(); if (param.Value.GetType()== typeof(DateTime)) { DateTime d = Convert.ToDateTime(param.Value); date = string.Format("{0:u}", d); date = date.Remove(date.Length - 1); } p = Marshal.StringToCoTaskMemAnsi(date); ret = bind_param(handle, index, a_type, p, u_type, flag); break; case CUBRIDDataType.CCI_U_TYPE_SET: case CUBRIDDataType.CCI_U_TYPE_MULTISET: case CUBRIDDataType.CCI_U_TYPE_SEQUENCE: IntPtr set = IntPtr.Zero; string[] value = data_format((object[])param.Value, param.InnerCUBRIDDataType); int[] indicator = new int[value.Length]; for (int i = 0; i < value.Length; i++) { if (value[i] != null) { indicator[i] = 0; } else { indicator[i] = 1; } } //CUBRIDDataType.CCI_U_TYPE_STRING or param.InnerCUBRIDDataType ret = cci_set_make(ref set, CUBRIDDataType.CCI_U_TYPE_STRING, value.Length, value, indicator); if (ret < 0) { return ret; } ret = bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_SET, set, param.CUBRIDDataType, flag); cci_set_free(set); break; case CUBRIDDataType.CCI_U_TYPE_BLOB: CUBRIDBlob blob = (CUBRIDBlob)param.Value; bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_BLOB, blob.GetPackedLobHandle(), param.CUBRIDDataType, flag); break; case CUBRIDDataType.CCI_U_TYPE_CLOB: CUBRIDClob clob = (CUBRIDClob)param.Value; bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_CLOB, clob.GetPackedLobHandle(), param.CUBRIDDataType, flag); break; case CUBRIDDataType.CCI_U_TYPE_BIT: case CUBRIDDataType.CCI_U_TYPE_VARBIT: T_CCI_BIT bit = new T_CCI_BIT(); bit.size = ((byte[])param.Value).Length; bit.buf = Marshal.AllocHGlobal(bit.size); Marshal.Copy((byte[])param.Value, 0, bit.buf, bit.size); p = Marshal.AllocHGlobal(Marshal.SizeOf(bit)); Marshal.StructureToPtr(bit, p, false); ret = bind_param(handle, index, T_CCI_A_TYPE.CCI_A_TYPE_BIT, p, param.CUBRIDDataType, flag); Marshal.FreeHGlobal(p); break; case CUBRIDDataType.CCI_U_TYPE_NULL: ret = bind_param(handle, index, a_type, IntPtr.Zero, u_type, flag); break; default: string bind_value = param.Value.ToString(); if (param.GetParameterEncoding().Equals(conn.GetEncoding())) { bind_value = Encoding.Default.GetString(conn.GetEncoding().GetBytes(param.Value.ToString())); } else { bind_value = Encoding.Default.GetString(param.GetParameterEncoding().GetBytes(param.Value.ToString())); } p = Marshal.StringToCoTaskMemAnsi(bind_value); ret = bind_param(handle, index, a_type, p, u_type, flag); break; } return ret; }
public CUBRIDArray(CUBRIDDataType type, int arrayLength) { baseType = type; length = arrayLength; if (length < 0) return; switch (type) { case CUBRIDDataType.CCI_U_TYPE_BIT: case CUBRIDDataType.CCI_U_TYPE_VARBIT: internalArray = (Object[])(new byte[length][]); break; case CUBRIDDataType.CCI_U_TYPE_SHORT: (new Int16[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_INT: (new int[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_BIGINT: (new long[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_FLOAT: (new float[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_DOUBLE: case CUBRIDDataType.CCI_U_TYPE_MONETARY: (new Double[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_NUMERIC: (new Decimal[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_DATE: (new DateTime[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_TIME: (new DateTime[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_TIMESTAMP: case CUBRIDDataType.CCI_U_TYPE_DATETIME: (new DateTime[length]).CopyTo(internalArray, length); break; case CUBRIDDataType.CCI_U_TYPE_CHAR: case CUBRIDDataType.CCI_U_TYPE_NCHAR: case CUBRIDDataType.CCI_U_TYPE_STRING: case CUBRIDDataType.CCI_U_TYPE_VARNCHAR: internalArray = (Object[])(new String[length]); break; case CUBRIDDataType.CCI_U_TYPE_OBJECT: internalArray = (Object[])(new CUBRIDOid[length]); break; case CUBRIDDataType.CCI_U_TYPE_BLOB: //TODO //internalArray = (Object[]) (new CUBRIDBlob[length]); break; case CUBRIDDataType.CCI_U_TYPE_CLOB: //TODO //internalArray = (Object[])(new CUBRIDClob[length]); break; default: baseType = CUBRIDDataType.CCI_U_TYPE_NULL; internalArray = new Object[length]; break; } }
private static bool is_collection_type(CUBRIDDataType type) { if (type == CUBRIDDataType.CCI_U_TYPE_SET || type == CUBRIDDataType.CCI_U_TYPE_MULTISET || type == CUBRIDDataType.CCI_U_TYPE_SEQUENCE) { return true; } else { return false; } }
/// <summary> /// Initializes a new instance of the <see cref="CUBRIDParameter" /> class. /// </summary> /// <param name="parameterName"> Name of the parameter. </param> /// <param name="cubridDataType"> CUBRID Data Type. </param> public CUBRIDParameter(string parameterName, CUBRIDDataType cubridDataType) { paramName = parameterName; CUBRIDDataType = cubridDataType; this.Value = ""; }