@Daria_D15
Junior QA Automation

Как из базы данных MySQL в Java получить результат запроса в виде объекта?

List<String> result = new ArrayList<>();

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection(url, username, password);
            Statement statement = conn.createStatement();
            PreparedStatement stmt;
            ResultSet rs = statement.executeQuery("SELECT `permission_id`, `direction_json`, `username`, `password`, `object_types`, `id` FROM `sys_account` WHERE `permission_id` = 1 AND `disabled`= 0 AND `id`= 3 OR `id`=116 OR `id`= 72 OR `id` = 67");
            while (rs.next()) {
                result.add(rs.getString("username"));
                result.add(rs.getString("password"));
                int pId = rs.getInt("permission_id");
                String permissions_id = Integer.toString(pId);
                result.add(permissions_id);
                result.add(rs.getString("direction_json"));
                result.add(rs.getString("object_types"));

            }
            System.out.println(result.toString());


        } catch (ClassNotFoundException | SQLException e) {
            throw new RuntimeException(e);
        }


Ответ приходит в виде массива
[maiorow, mWbs0yt, 3, [1,8], [8,9,10,11,12], dir_str, ZXC120, 3, [7], [13], DirLid, ZXC121, 3, [2], [1,2,3,4,5,6,7]]

Мне нужно разделить ответ на объекты, что- то вроде такого:
maiorow, mWbs0yt, 3, [1,8], [8,9,10,11,12]
dir_str, ZXC120, 3, [7], [13]
DirLid, ZXC121, 3, [2], [1,2,3,4,5,6,7]
чтобы можно было по- очереди брать логин и пароль и авторизоваться
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
al_gon
@al_gon
Вам нужно +- что-то такое.
public class Test {

	public List<Login> findAll() {
		List<Login> results = new ArrayList<>();

		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			Connection conn = DriverManager.getConnection(url, username, password);
			Statement statement = conn.createStatement();
			PreparedStatement stmt;
			ResultSet rs = statement.executeQuery(
					"SELECT `permission_id`, `direction_json`, `username`, `password`, `object_types`, `id` FROM `sys_account` WHERE `permission_id` = 1 AND `disabled`= 0 AND `id`= 3 OR `id`=116 OR `id`= 72 OR `id` = 67");
			while (rs.next()) {
				Login login = new Login();
				login.setUsername(rs.getString("username"));
				login.setPassword(rs.getString("password"));
				results.add(login);

			}
			System.out.println(result.toString());

		} catch (ClassNotFoundException | SQLException e) {
			throw new RuntimeException(e);
		}
		return results;

	}
}

class Login {
	private String username;
	private String password;

	public String getUsername() {
		return username;
	}

	public void setUsername(final String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(final String password) {
		this.password = password;
	}
}


Надо будет дополнить поля ещё.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
[maiorow, mWbs0yt, 3, [1,8], [8,9,10,11,12], dir_str, ZXC120, 3, [7], [13], DirLid, ZXC121, 3, [2], [1,2,3,4,5,6,7]]

Это какая-то чепуха полученная методом toString. Спутались запятые и вообще непонятно где
объекты начинаются и где заканчиваются.

Распечатай отдельно чему у тебя равен direction_json и object_types. И я не уверен что они являются
строками. Возможно на уровне БД это более сложный объект. Короче узнай его тип.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы