Как получить данные MySQL без создания объекта из класса в Java - PullRequest
0 голосов
/ 12 декабря 2011

Я хочу получить данные из MySQL, не создавая объект из класса

Обычно я делаю что-то вроде

public ArrayList getInventoryByItemId(String ItemId) throws SQLException {
    ArrayList list = new ArrayList<Inventory>();
    String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'";
    Statement stmt = con.createStatement();
    ResultSet rset = stmt.executeQuery(sql);
    while (rset.next()) {
        a = new Inventory(rset.getInt(1), rset.getInt(2), rset.getString(3), rset.getString(4), rset.getTimestamp(6), rset.getString(7), rset.getString(8));
        list.add(a);
    }
    return list;
}

, проблема в том, что объект Inventory не имеет пользовательских данных изприсоединенная пользовательская таблица, я не могу создать новую Inventory.

Я просто хочу автоматически создать объект, в котором есть все атрибуты данных, к которому я могу получить доступ, используя имя столбца.

СпасибоВы

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Если у меня возникла проблема,

Вы можете создать новую карту (HashMap, которую я рекомендую) и поместить значения, используя имя столбца или индекс в качестве ключа.Итак, ваш список будет списком карт.

 while (rset.next()) {
        a = new HashMap<Integer,Object>();
        a.put(1,rset.getInt(1));
        ..........
        list.add(a);
    }

Или, если вы знаете точное количество столбцов, вы можете использовать пользовательский массив вместо Map (это будет быстрее)

0 голосов
/ 12 декабря 2011

Исходя из того, что вы говорите, я понимаю, что ваш запрос не возвращает данные, потому что в инвентаре нет пользовательских данных, с которыми он соединяется.Вам необходимо изменить свой запрос, чтобы использовать левое внешнее объединение.

String sql = "SELECT iid, i.uid, item_data, item_id, i.ctime, username, gender FROM Inventory i LEFT JOIN user u ON i.uid = u.uid WHERE item_id = '"+ItemId+"'"

Это позволит вашему запросу возвращать данные инвентаризации, даже если соответствующие данные пользователя не существуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...