【问题标题】:Java MYSQL Query , get 2 variables from different tablesJava MYSQL 查询,从不同的表中获取 2 个变量
【发布时间】:2017-08-03 07:19:04
【问题描述】:

有一个问题,我如何使用 mysql 从不同的表中获取 2 个不同的变量?是否可以使用准备好的语句从 1 个查询中工作?我是使用 java 进行 mysql 数据库编程的新手,所以这是我的问题。

我想得到:

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

我在这里做错了什么?

【问题讨论】:

  • 您正在做的事情应该可以工作,尽管最好使用JOIN - 您的代码出了什么问题?
  • 当我尝试从 ResultSet 获取值时出现“null”异常
  • 那么您需要显示该代码
  • 更新,添加完整代码。
  • 在 sql 客户端中运行您的代码并查看它们的输出 - 可能不是您想要的

标签: java mysql sql


【解决方案1】:
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 个值

【讨论】:

  • 谢谢,但仍然有这些空异常.. :?
  • 看起来查询没有返回任何内容。检查哪些参数被发送到查询并检查单独的查询返回一些行(例如来自 Workbench 调用)
  • 感谢@StanislavL,您的查询成功了。感谢所有回复的人,早上真的很糟糕,无法正常醒来,当我更改变量名称时忘记解析配置文件中的字符串..
【解决方案2】:

这是您当前的查询:

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

【讨论】:

  • 你怎么知道他在表中有userId和id列(ON p.userId = u.id)
  • @Ervinas34 u - 用户的简称,p - 项目。您可以在 FROM 和 JOIN 语句中看到。
  • @Chetanchadha 我不知道。这只是一个例子。
  • @Max 谢谢,我会通过示例尝试一下。
  • @Max 仍然无法弄清楚它是如何工作的。我的意思是加入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多