/// <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)
     {
     }
 }
Example #2
0
        /// <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);
        }