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; }
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(); }
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); }
/// <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 }