在选择行然后单击按钮时从多个表中获取数据

我尝试运行下面的代码,但每次运行它,它都不起作用。 任何人都可以强调我做错了吗?

代码应该做的是:

我必须在数据库中调用表r,另一个名为sa,表r包含列称为外键。 在我的java前端,我在jpanel中有一个Jtable,在另一个jpanel中有一个更新按钮。 当用户在jtable中选择一行然后单击“更新”时。 如果jtable r中的选定行具有sa id作为外键,该工具将显示来自文本框中的r的数据以及来自sa的数据。

代码

if(updateClicked == true){ btnSubmit.setVisible(false); btnUpdate.setVisible(true); btnNew.setEnabled(false); Statement st; PreparedStatement ps; ResultSet rs; try { String rid = table.getValue(0); JOptionPane.showMessageDialog(null, rid); String rq ="SELECT * FROM `r` WHERE 'r_id`=' "+rid+"'"; ps = Login.con.prepareStatement(rq); rs = ps.executeQuery(); String saID = rs.getString(2); String q = "SELECT sa.Argument FROM sa, r WHERE r.sid ="+sID ; st = Login.con.createStatement(); rs = st.executeQuery(q); String argu = rs.getString(1); System.out.println(argu); if (argu.isEmpty()==false){ btnAddSA.doClick(); txtaArg.setText(argu); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

控制台输出

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:’where子句’中的未知列’R0004′

首先给你的表名正确。 “r”和“sa”并不意味着什么。

我不知道你的SQL有什么问题,但我建议你使用PreparedStatement。 它使得编写SQL更容易,因此您不必担心分隔符类型错误。

一个基本的例子是:

 String sql = "INSERT INTO Page (Name, Title) VALUES (?, ?)"; PreparedStatement stmt = connection.prepareStatement(sql); stmt.setString( 1, "Name1" ); stmt.setString( 2, "Title1" ); stmt.executeUpdate(); 

您可以在论坛或网站上搜索更多信息。