Example #1
0
 public BindInput(enum_field_types bufferType, byte[] buffer, int?length, bool?isNull, bool is_unsigned)
 {
     BufferType  = bufferType;
     this.Buffer = buffer;
     this.Length = length;
     IsNull      = isNull;
     IsUnsigned  = is_unsigned;
 }
Example #2
0
        public QueryFieldDescription(string name, enum_field_types type, long maxLength, uint length, MySqlFieldFlags flags)
        {
            Name      = name;
            Type      = type;
            MaxLength = maxLength;
            Length    = length;
            Flags     = flags;

            // computed fields
            FieldType = MysqltoNetType();
        }
Example #3
0
        public static DatabaseFieldTypes MySqlTypeToFieldType(enum_field_types type)
        {
            switch (type)
            {
            case MYSQL_TYPE_NULL:
                return(DatabaseFieldTypes.Null);

            case MYSQL_TYPE_TINY:
                return(DatabaseFieldTypes.Int8);

            case MYSQL_TYPE_YEAR:
            case MYSQL_TYPE_SHORT:
                return(DatabaseFieldTypes.Int16);

            case MYSQL_TYPE_INT24:
            case MYSQL_TYPE_LONG:
                return(DatabaseFieldTypes.Int32);

            case MYSQL_TYPE_LONGLONG:
            case MYSQL_TYPE_BIT:
                return(DatabaseFieldTypes.Int64);

            case MYSQL_TYPE_FLOAT:
                return(DatabaseFieldTypes.Float);

            case MYSQL_TYPE_DOUBLE:
                return(DatabaseFieldTypes.Double);

            case MYSQL_TYPE_DECIMAL:
            case MYSQL_TYPE_NEWDECIMAL:
                return(DatabaseFieldTypes.Decimal);

            case MYSQL_TYPE_TIMESTAMP:
            case MYSQL_TYPE_DATE:
            case MYSQL_TYPE_TIME:
            case MYSQL_TYPE_DATETIME:
                return(DatabaseFieldTypes.Date);

            case MYSQL_TYPE_TINY_BLOB:
            case MYSQL_TYPE_MEDIUM_BLOB:
            case MYSQL_TYPE_LONG_BLOB:
            case MYSQL_TYPE_BLOB:
            case MYSQL_TYPE_STRING:
            case MYSQL_TYPE_VAR_STRING:
                return(DatabaseFieldTypes.Binary);

            default:
                FEL_LOG_WARN("sql.sql", "MysqlTypeToFieldType(): invalid field type {0}", type);
                break;
            }

            return(DatabaseFieldTypes.Null);
        }
Example #4
0
 /// <summary>
 /// Inits structure for binding.
 /// </summary>
 public void InitForBind(MYSQL_FIELD fieldMetadata, NativeConnection nativeConnection)
 {
     buffer_type = fieldMetadata.Type;
     if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_DATETIME || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_DATE || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_DATETIME2 || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_TIME || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_TIME2 || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_TIMESTAMP || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_TIMESTAMP2 || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_NEWDATE)
     {
         SetBuffer(new byte[Marshal.SizeOf <MYSQL_TIME>()]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_TINY)
     {
         SetBuffer(new byte[sizeof(byte)]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_SHORT || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_YEAR)
     {
         SetBuffer(new byte[sizeof(ushort)]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_INT24 || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_LONG)
     {
         SetBuffer(new byte[sizeof(uint)]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_BIT || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_LONGLONG)
     {
         SetBuffer(new byte[sizeof(ulong)]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_DOUBLE)
     {
         SetBuffer(new byte[sizeof(double)]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_FLOAT)
     {
         SetBuffer(new byte[sizeof(float)]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_JSON || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_TINY_BLOB || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_BLOB || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_LONG_BLOB || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_MEDIUM_BLOB)
     {
         SetBuffer(new byte[1024]);
     }
     else if (fieldMetadata.Type == enum_field_types.MYSQL_TYPE_VARCHAR || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_STRING || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_VAR_STRING || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_DECIMAL || fieldMetadata.Type == enum_field_types.MYSQL_TYPE_NEWDECIMAL)
     {
         // set buffer including ending null
         SetBuffer(new byte[(fieldMetadata.Length + 1) * nativeConnection.mysql_get_character_set_info().mbmaxlen]);
     }
     else
     {
         throw new NotSupportedException();
     }
     length      = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(uint)));
     is_null     = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(sbyte)));
     is_unsigned = (byte)(fieldMetadata.Flags.HasFlag(MySqlFieldFlags.UNSIGNED_FLAG) ? 1 : 0);
     // TODO: not all fields are filled so in many cases it may respond failing
 }