проблема в методе setString.in при извлечении данных из таблицы - PullRequest
0 голосов
/ 09 мая 2011

У меня есть две таблицы «Table1» с столбцами user_name, Password и ID курса и другая таблица «course» с столбцами course_id, course_name. Я использовал следующий код для отображения идентификатора курса из Table1 в соответствии с именем пользователя, полученным изlogin page.using ResultSet rs1.now Я хочу извлечь имя_курса из таблицы "course" в соответствии с идентификатором курса, полученным из "Table1". Для этого во втором запросе 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 ]

2 голосов
/ 09 мая 2011

Почему вы обращаетесь к базе данных на два хода, даже если вы создали одноразовый объект подключения.

изменить запрос как показано ниже

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

из этого запроса вам также не нужно вводить данные Courseid.

1 голос
/ 09 мая 2011

Нет необходимости дважды нажимать на базу данных, чтобы получить результаты, которые вам нужны. используйте запрос

Выберите table1.course_id, course.course_name из table1, конечно, где table1.course_id = course_id и table1.user_name =?

0 голосов
/ 09 мая 2011

Как уже упоминалось в другом посте, нет необходимости переходить к другому набору запросов.Попробуйте этот пример запроса:

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
0 голосов
/ 09 мая 2011

Это должно установить параметр course_id:

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

Или, как я вижу, столбец "course_id" может иметь другое имя в "Table1":

pstmt2.setString(1,rs1.getString("course ID"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...