/// <summary> /// reload table in specific database /// </summary> /// <param name="table"></param> /// <param name="conn"></param> public static void ReloadColumnList(this MySqlTableInfo table, MySqlConnection conn) { try { var cmd = new MySqlCommand("describe " + table.Name, conn); var descReader = cmd.ExecuteReader(); //columns //Field.. //Type //Null //Key //Default, //Extra int field_col = descReader.GetOrdinal("Field"), type_col = descReader.GetOrdinal("Type"), null_col = descReader.GetOrdinal("Null"), key_col = descReader.GetOrdinal("Key"), default_col = descReader.GetOrdinal("Default"), extra_col = descReader.GetOrdinal("Extra"); //--------------------- List <MySqlColumnInfo> colInfoList = new List <MySqlColumnInfo>(); while (descReader.Read()) { // MySqlColumnInfo colInfo = new MySqlColumnInfo(); colInfo.Name = descReader.GetString(field_col); colInfo.FieldTypeName = descReader.GetString(type_col); colInfo.Nullable = descReader.GetString(null_col) == "YES"; colInfo.Key = descReader.GetString(key_col); colInfo.DefaultValue = descReader.GetString(default_col); colInfo.ExtraInfo = descReader.GetString(extra_col); // colInfoList.Add(colInfo); } descReader.Close(); table.Columns = colInfoList; } catch (Exception ex) { } }
/// <summary> /// C#类型获取 /// </summary> /// <param name="col">列信息</param> /// <returns></returns> public string GetCSharpDataType(MySqlColumnInfo col) { var csType = string.Empty; var dataType = col.Data_Type.ToLower(); switch (dataType) { case "bit": { csType = "bool"; if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "tinyint": { if (col.Column_Type.Contains("unsigned")) { csType = "byte"; } else { csType = "sbyte"; } if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "smallint": { csType = "short"; if (col.Column_Type.Contains("unsigned")) { csType = "u" + csType; } if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "mediumint": case "int": case "integer": { csType = "int"; if (col.Column_Type.Contains("unsigned")) { csType = "u" + csType; } if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "bigint": { csType = "long"; if (col.Column_Type.Contains("unsigned")) { csType = "u" + csType; } if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "float": { csType = "float"; break; } case "double": { csType = "double"; if (col.Column_Type.Contains("unsigned")) { csType = "u" + csType; } break; } case "decimal": { csType = "decimal"; if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "date": { csType = "DateTime"; if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "time": { csType = "string"; break; } case "year": { csType = "string"; break; } case "datetime": case "timestamp": { csType = "DateTime"; if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "character": { csType = "char"; if (col.Is_Nullable == "YES") { csType = csType + "?"; } break; } case "char": case "varchar": case "tinytext": case "mediumtext": case "text": case "longtext": { csType = "string"; break; } case "binary": case "varbinary": case "tinyblob": case "blob": case "longblob": { csType = "byte[]"; break; } default: { throw new Exception("Unknown database data type."); } } return(csType); }