我尝试运行下面的代码,但每次运行它时都无效。任何人都可以强调我做错了吗?
代码应该做的是:
我必须将数据库中的表称为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'
答案 0 :(得分:1)
首先给你的表名正确。 “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();
您可以在论坛或网站上搜索更多信息。