private TableDef GetTD_MySQL(string table) { string query = "SELECT COLUMN_NAME As field,ORDINAL_POSITION as ordinal, IS_NULLABLE, DATA_TYPE as DataType, CHARACTER_MAXIMUM_LENGTH as data_length,COLUMN_KEY as is_index,COLUMN_COMMENT as description,EXTRA\r\n\t\t\t\t\t\t\tFROM INFORMATION_SCHEMA.COLUMNS\r\n\t\t\t\t\t\t\twhere table_name = @name and table_schema = @schema group by COLUMN_NAME"; DbCommand cmd = (DbCommand)null; DbDataReader reader = (DbDataReader)null; TableDef tableDef = new TableDef(); tableDef.Name = table; List <FieldDef> fieldDefList = new List <FieldDef>(); try { cmd = DBConnectionFactory.GetMySqlCommand(query, this._dbconn); DBTools.AddDbParameter(ref cmd, "@name", (object)table); DBTools.AddDbParameter(ref cmd, "@schema", (object)this._dbconn.Database); reader = cmd.ExecuteReader(); while (reader.Read()) { FieldDef fieldDef = new FieldDef(); fieldDef.Name = DBTools.GetDBStringValue(reader, "field"); fieldDef.FieldLength = DBTools.GetDBIntValue(reader, "data_length"); string dbStringValue = DBTools.GetDBStringValue(reader, "description"); fieldDef.Description = string.IsNullOrEmpty(dbStringValue) ? DBHandler.NormalizeFieldName("_" + fieldDef.Name) : dbStringValue; try { fieldDef.DataType = DBTools.GetCSTypeFromDBType(DBTools.GetDBStringValue(reader, "DataType"), (double)fieldDef.FieldLength); } catch (Exception ex) { string message = ex.Message; } fieldDef.CanBeNull = DBTools.GetDBStringValue(reader, "is_nullable") == "YES"; fieldDef.IsPrimaryKey = DBTools.GetDBStringValue(reader, "is_index", (string)null) == "PRI"; fieldDefList.Add(fieldDef); } } catch (DbException ex) { throw ex; } finally { reader?.Close(); cmd?.Dispose(); } tableDef.Fields = fieldDefList.ToArray(); return(tableDef); }
private DbCommand GetDBCommand(string queryString) { if (this._driver == "MySQL") { return(DBConnectionFactory.GetMySqlCommand(queryString, this._dbconn)); } if (this._driver == "PgSQL") { return(DBConnectionFactory.GetPgSqlCommand(queryString, this._dbconn)); } if (this._driver == "MSSQL") { return(DBConnectionFactory.GetSqlCommand(queryString, this._dbconn)); } return((DbCommand)null); }