コード例 #1
0
        /// <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]);
        }
コード例 #2
0
 /// <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;
 }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 /// <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
 }
コード例 #6
0
 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);
     }
 }
コード例 #7
0
ファイル: CUBRIDArray.cs プロジェクト: CUBRID/cubrid-adonet
		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;
		}
コード例 #8
0
        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);
        }
コード例 #9
0
        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());
        }
コード例 #10
0
 /// <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
 }
コード例 #11
0
    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;
    }
コード例 #12
0
ファイル: CUBRIDArray.cs プロジェクト: tw-kang/cubrid-adonet
        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;
        }
コード例 #13
0
        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;
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        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);
        }
コード例 #16
0
 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);
コード例 #17
0
        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));
            }
        }
コード例 #18
0
    /// <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;
      }
    }
コード例 #19
0
 /// <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
 }
コード例 #20
0
 /// <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;
 }
コード例 #21
0
ファイル: CUBRIDArray.cs プロジェクト: tw-kang/cubrid-adonet
        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;
            }
        }
コード例 #22
0
        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);
        }
コード例 #23
0
		public CUBRIDLobHandle(CUBRIDDataType lobType, byte[] packedLobHandle)
		{
			this.lobType = lobType;
			this.packedLobHandle = packedLobHandle;
			InitLob();
		}
コード例 #24
0
        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);
        }
コード例 #25
0
    /// <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;
    }
コード例 #26
0
 /// <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;
 }
コード例 #27
0
 /// <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;
 }
コード例 #28
0
    /// <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];
    }
コード例 #29
0
 /// <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
 }
コード例 #30
0
 /// <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;
 }
コード例 #31
0
 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));
   }
 }
コード例 #32
0
 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);
コード例 #33
0
 /// <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;
 }
コード例 #34
0
 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;
 }
コード例 #35
0
 public static extern int cci_set_make(ref IntPtr set, CUBRIDDataType u_type, int size, string[] value, int[] indicator);
コード例 #36
0
 /// <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;
 }
コード例 #37
0
        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);
        }
コード例 #38
0
        /// <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;
            }
        }
コード例 #39
0
    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;
      }
    }
コード例 #40
0
 public CUBRIDLobHandle(CUBRIDDataType lobType, byte[] packedLobHandle)
 {
     this.lobType         = lobType;
     this.packedLobHandle = packedLobHandle;
     InitLob();
 }
コード例 #41
0
 public static extern int cci_set_make(ref IntPtr set, CUBRIDDataType u_type, int size, string[] value, int[] indicator);
コード例 #42
0
    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;
    }
コード例 #43
0
        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;                  
        }
コード例 #44
0
ファイル: CUBRIDArray.cs プロジェクト: CUBRID/cubrid-adonet
		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;
			}
		}
コード例 #45
0
 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;
     }
 }
コード例 #46
0
 /// <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     = "";
 }