setString方法中的问题。从表中检索数据

时间:2011-05-09 07:33:53

标签: java oracle

我有两个表“Table1”,其中列为user_name,密码和课程ID,另一个表为“course”,列为course_id,course_name。我使用以下代码根据从表1中收到的user_name显示课程ID登录页面。使用ResultSet rs1.now我想根据从“Table1”收到的课程ID从表“course”中检索course_name。对于第二个查询pstmt2.setString(1,);我应该用什么参数来获取上一个查询的course_id值

    HttpSession sess=request.getSession();

    String a=(String)sess.getAttribute("user");
    String b=(String)sess.getAttribute("pass");

    try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con=DriverManager.getConnection("jdbc:odbc:ggg");
        Statement st = con.createStatement();



                String query="select * from Table1  where user_name=?";
                PreparedStatement pstmt=con.prepareStatement(query);
                pstmt.setString(1,a);
                ResultSet rs1=pstmt.executeQuery();
        while(rs1.next())

          out.println("<h3>COURSE ID:&nbsp;"+rs1.getString("course ID")+"<h3>");


                String query2="SELECT * from course where course_id=?";
                PreparedStatement pstmt2=con.prepareStatement(query2);

               pstmt2.setString(1,);

               ResultSet rs2=pstmt2.executeQuery();

        while(rs2.next())
        {
          out.println("<h3>course name:&nbsp;"+rs2.getString("course_name")+"<h3>");
        }

4 个答案:

答案 0 :(得分:2)

即使您创建了一次连接对象,为什么要进行两次数据库命中。

修改查询如下

SELECT * from course where course_id = (select course_id from Table1 where user_name=?);

从这个查询中你也没有给出courseid的输入。

答案 1 :(得分:1)

无需点击数据库两次即可获得所需的结果。使用查询

从table1选择table1.course_id,course.course_name,其中table1.course_id = course_id和table1.user_name =?

答案 2 :(得分:0)

这应该设置course_id参数:

pstmt2.setString(1,rs1.getString("course_id"));

或者,正如我看到“course_id”列在“Table1”中可能有不同的名称:

pstmt2.setString(1,rs1.getString("course ID"));

答案 3 :(得分:0)

正如另一篇文章提到的那样,没有必要去另一组查询。试试这个例子查询:

SELECT course.course_id, course.course_name
  FROM table1 t1
 INNER JOIN course c
    ON t1.course_id = c.course_id
 WHERE t1.user_name = ?;

现在,如果您坚持编码,pstmt2.setString(1,);的参数是:

pstmt2.setString(1,rs1.getString("course_id")); //or course ID defending on your column name