Java MYSQL查询,从不同的表中获得2个变量
有个问题,我怎样才能从不同的表使用MySQL获得2个不同的变量?是否可以使用预准备语句从1个查询中进行工作?我是用java编写的mysql数据库编程的新手,所以这是我的问题。Java MYSQL查询,从不同的表中获得2个变量
我试图让:
user_key from user table
project_key from project table
,是的,我知道,表名应以非单数形式。
我想:
String project_key = null;
String user_key = null;
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://mysql:" + Config.getPortDB() + "/" + Config.getDatabase() + "?"
+ "user=" + Config.getUsername() + "&password=" + Config.getPassword());
String query ="SELECT user_key,project_key FROM user, project WHERE user_key = ? AND project_key = ?";
PreparedStatement preparedStatement = con.prepareStatement(query);
for(int i = 0; i < auths.size() ; i++) {
preparedStatement.setString(i+1, auths.get(i));
}
ResultSet rs = preparedStatement.executeQuery();
while(rs.next()) {
project_key = rs.getString("project_key");
user_key = rs.getString("user_key");
}
System.out.println(project_key); // null
System.out.println(user_key); // null
我在做什么错在这里?
SELECT u.user_key,
p.project_key
FROM (select user_key from user WHERE user_key = ?) u,
(select project_key from project WHERE project_key = ?) p
如果拖表没有任何关系可言你仍然可以使用子查询得到2个值
谢谢,但仍然有这些空例外..:? – Ervinas34
看起来像查询返回Nothing.Check哪些参数发送到查询并检查单独的查询返回一些行(例如从工作台调用) – StanislavL
谢谢@StanislavL,您的查询工作。 感谢所有回复的人,早晨真的很糟糕,无法正常唤醒,忘记从配置文件中解析字符串时,我正在更改变量名称。 – Ervinas34
这是您的当前查询:
SELECT user_key,project_key
FROM user, project
WHERE user_key = ?
AND project_key = ?
从2代表要获得效果,请使用JOIN,像这样:
SELECT u.user_key, p.project_key
FROM user u
JOIN project p ON p.userId = u.id
WHERE u.user_key = ?
AND p.project_key = ?
你在做什么应该工作,尽管最好使用'JOIN' - 你的代码出了什么问题? –
当我尝试从ResultSet中获取值时,出现“null”异常 – Ervinas34
那么您需要显示该代码,然后 –