0

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

代码应该做的是:

我必须在数据库中的表名为 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”

4

1 回答 1

1

First of all give your tables proper names. "r" and "sa" don't mean anything.

I don't know what the problem with your SQL is but I will suggest that you use a PreparedStatement. It makes it easier to code the SQL so you don't worry about delimiter type mistakes.

A basic example would be:

String sql = "INSERT INTO Page (Name, Title) VALUES (?, ?)";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, "Name1" );
stmt.setString( 2, "Title1" );
stmt.executeUpdate();

You can search the forum or web for more information.

于 2013-03-30T00:15:15.827 回答