Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>From a quick look at the MySQLClient source code, I think your best choice is IDataReader.GetDataTypeName(). This is the underlying DBMS's name for the data type of a column. For (a limited amount of) more info, see the <a href="http://msdn.microsoft.com/en-us/library/system.data.idatarecord.getdatatypename.aspx" rel="noreferrer">MSDN docs</a> and the the <a href="http://dev.mysql.com/doc/refman/5.1/en/connector-net-ref-mysqlclient.html#connector-net-ref-mysqlclient-mysqldatareader-getdatatypename" rel="noreferrer">corresponding MySQL docs</a> for this property.</p> <p>Here's the source from MySqlDateTime.cs for this property, which looks promising:</p> <pre><code>string IMySqlValue.MySqlTypeName { get { switch (type) { case MySqlDbType.Date: return "DATE"; case MySqlDbType.Newdate: return "NEWDATE"; case MySqlDbType.Timestamp: return "TIMESTAMP"; } return "DATETIME"; } } </code></pre> <p>Here's another utility function you may want to borrow the code of, from MetaData.cs:</p> <pre><code>public static MySqlDbType NameToType(string typeName, bool unsigned, bool realAsFloat, MySqlConnection connection) { switch (typeName.ToUpper(CultureInfo.InvariantCulture)) { case "CHAR": return MySqlDbType.String; case "VARCHAR": return MySqlDbType.VarChar; case "DATE": return MySqlDbType.Date; case "DATETIME": return MySqlDbType.DateTime; case "NUMERIC": case "DECIMAL": case "DEC": case "FIXED": if (connection.driver.Version.isAtLeast(5, 0, 3)) return MySqlDbType.NewDecimal; else return MySqlDbType.Decimal; case "YEAR": return MySqlDbType.Year; case "TIME": return MySqlDbType.Time; case "TIMESTAMP": return MySqlDbType.Timestamp; case "SET": return MySqlDbType.Set; case "ENUM": return MySqlDbType.Enum; case "BIT": return MySqlDbType.Bit; case "TINYINT": return unsigned ? MySqlDbType.UByte : MySqlDbType.Byte; case "BOOL": case "BOOLEAN": return MySqlDbType.Byte; case "SMALLINT": return unsigned ? MySqlDbType.UInt16 : MySqlDbType.Int16; case "MEDIUMINT": return unsigned ? MySqlDbType.UInt24 : MySqlDbType.Int24; case "INT": case "INTEGER": return unsigned ? MySqlDbType.UInt32 : MySqlDbType.Int32; case "SERIAL": return MySqlDbType.UInt64; case "BIGINT": return unsigned ? MySqlDbType.UInt64 : MySqlDbType.Int64; case "FLOAT": return MySqlDbType.Float; case "DOUBLE": return MySqlDbType.Double; case "REAL": return realAsFloat ? MySqlDbType.Float : MySqlDbType.Double; case "TEXT": return MySqlDbType.Text; case "BLOB": return MySqlDbType.Blob; case "LONGBLOB": return MySqlDbType.LongBlob; case "LONGTEXT": return MySqlDbType.LongText; case "MEDIUMBLOB": return MySqlDbType.MediumBlob; case "MEDIUMTEXT": return MySqlDbType.MediumText; case "TINYBLOB": return MySqlDbType.TinyBlob; case "TINYTEXT": return MySqlDbType.TinyText; case "BINARY": return MySqlDbType.Binary; case "VARBINARY": return MySqlDbType.VarBinary; } throw new MySqlException("Unhandled type encountered"); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload