public static DbQueryResult GetInfo() { using (var conn = new MySqlConnection(connStr)) { conn.Open(); var result = new DbQueryResult(); var _tables = result.tables; result.affectedRows = 0; result.schema = cfg.database; var q = new MyQuery("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = ", MyParameterDataTypes.String); q[0].Assign(cfg.database); var dt = MyUtils.ExecuteDbTable(conn, q.ToSql()); for (int i = 0; i < dt.rowCount; ++i) { var dr = dt[i]; _tables.Add(new DbTable { name = dr["TABLE_NAME"].ToString(), comment = dr["TABLE_COMMENT"].ToString() }); } q.Assign("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ", MyParameterDataTypes.String, " AND TABLE_NAME = ", MyParameterDataTypes.String); q[0].Assign(cfg.database); foreach (var t in _tables) { q[1].Assign(t.name); dt = MyUtils.ExecuteDbTable(conn, q.ToSql()); for (int i = 0; i < dt.rowCount; ++i) { var dr = dt[i]; var c = new DbColumn { name = (string)dr["COLUMN_NAME"].ToString(), columnIndex = i, dataType = GetDataType((string)dr["DATA_TYPE"], (string)dr["COLUMN_TYPE"]), nullable = (string)dr["IS_NULLABLE"] == "YES", comment = (string)dr["COLUMN_COMMENT"], autoIncrement = (string)dr["EXTRA"] == "auto_increment", timestamp = (string)dr["DATA_TYPE"] == "timestamp" && (string)dr["COLUMN_DEFAULT"] == "CURRENT_TIMESTAMP", primaryKey = (string)dr["COLUMN_KEY"] == "PRI", parent = t }; t.AddColumn(c); } } return(result); } }