MySQL объединение двух таблиц возвращает правильные данные, но объединение трех таблиц возвращает пустые с помощью java Statement executeQuery - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть три таблицы:

table req_specs(id int,testproject_id int,doc_id varchar) 

table requirements(id int,srs_id int,req_doc_id varchar)

tables nodes_hierarchy(id int,name varchar,parent_id int,node_type_id int,node_order int)

Первые две таблицы, объединяющие код запроса

public String getRequirementDocIDofProject(String testprojectName)
        throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
    String req_doc_id = "";
    initDB();
    resultSet = statement.executeQuery("select * from req_specs " + 
            "INNER JOIN requirements reqs " + 
            "on req_specs.id =reqs.srs_id where req_specs.testproject_id=7165 ");
    while (resultSet.next()) {
        req_doc_id = req_doc_id+" "+resultSet.getString("req_doc_id");
    }
    close();
    return req_doc_id;
}

dbcon.getRequirementDocIDofProject("XXX"); возвращают правильные данные

Присоединение ко вторым трем таблицамкод запроса

public String getRequirementDocIDofProject(String testprojectName)
        throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
    String req_doc_id = "";
    initDB();
    resultSet = statement.executeQuery("select * from req_specs INNER JOIN nodes_hierarchy nh " + 
            "on nh.id=req_specs.testproject_id  " + 
            "INNER JOIN requirements reqs " + 
            "on req_specs.id =reqs.srs_id where nh.name='"+testprojectName+"'   ");
    while (resultSet.next()) {
        req_doc_id = req_doc_id+" "+resultSet.getString("req_doc_id");
    }
    close();
    return req_doc_id;
}

dbcon.getRequirementDocIDofProject("XXX"); возвращает пустое значение.

, но когда я помещаю mysql в navicat, он отображает правильные значения

select * from req_specs INNER JOIN nodes_hierarchy nh
on nh.id=req_specs.testproject_id
INNER JOIN requirements reqs 
on req_specs.id =reqs.srs_id where nh.name='XXX'

1 Ответ

0 голосов
/ 11 декабря 2018

Я нахожу ответ, в коде

 "on req_specs.id =reqs.srs_id where nh.name='"+testprojectName+"'   ");

поле nh.name имеет значение не английские символы. Я должен указать правильную кодировку символов.

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?useUnicode=yes&characterEncoding=UTF-8","username", "password");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...