2017-08-03 62 views
-1

有个问题,我怎样才能从不同的表使用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 

我在做什么错在这里?

+0

你在做什么应该工作,尽管最好使用'JOIN' - 你的代码出了什么问题? –

+0

当我尝试从ResultSet中获取值时,出现“null”异常 – Ervinas34

+0

那么您需要显示该代码,然后 –

回答

0
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个值

+0

谢谢,但仍然有这些空例外..:? – Ervinas34

+0

看起来像查询返回Nothing.Check哪些参数发送到查询并检查单独的查询返回一些行(例如从工作台调用) – StanislavL

+0

谢谢@StanislavL,您的查询工作。 感谢所有回复的人,早晨真的很糟糕,无法正常唤醒,忘记从配置文件中解析字符串时,我正在更改变量名称。 – Ervinas34

0

这是您的当前查询:

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 = ? 
+0

想知道“u”和“p”是什么意思.. – Ervinas34

+0

你怎么知道他在表格中有userId和id列(ON p.userId = u.id) –

+0

@Ervinas34 u - User的简称, p - 用于项目。您可以在FROM和JOIN语句中看到。 – Max

相关问题