2017-08-03 125 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

相關問題