2016-11-16 7 views
0

У меня есть одна таблица Table name is PARKTABLEполучить значение из таблицы базы данных, где id =? Java

Теперь я хочу, чтобы получить эти значения в JSP мой код здесь

<jsp:useBean id="loginBean" scope="session" class="vustudent.Login" /> 
     <input type="text" name="takei" value='<jsp:getProperty name="loginBean" property="loginid" />' /> 
     <% 
      String dbId = request.getParameter("takei"); 
      Class.forName("org.apache.derby.jdbc.ClientDriver"); 
      String url= "jdbc:derby://localhost:1527/sample;create=true; user=app; password=app"; 
      Connection con = DriverManager.getConnection(url); 
      Statement st= con.createStatement(); 
      String query = "SELECT * FROM PARKTABLE WHERE ID =\'"+ dbId + "\' "; 
      ResultSet rs = st.executeQuery(query); 
      // iterate through the java resultset 
     if (rs.next()) 
     { 
     String placeOne = rs.getString("Place1"); 
     String placeTwo = rs.getString("Place2"); 
     System.out.println("place1" +placeOne); 
     System.out.println("place1" +placeTwo); 
     } 
     %> 
     </br> 
     <input type="text" name="pl1value" value='placeOne' /> 

печатает placeOne в поле ввода текста istead его стоимости. Я хочу напечатать место. Одно значение красного или зеленого цвета из базы данных. где я ошибаюсь?

ответ

2

Измените свой ввод текста, как показано ниже:

<input type="text" name="pl1value" value='<%=placeOne%>' /> 

А затем измените свой Java код, как показано ниже:

String placeOne = ""; 
String placeTwo = ""; 

if (rs.next()) 
     { 
     placeOne = rs.getString("Place1"); 
     placeTwo = rs.getString("Place2"); 
     System.out.println("place1" +placeOne); 
     System.out.println("place1" +placeTwo); 
     } 

Так что ваш тип входа может печатать значение по умолчанию, даже если ваш запрос не возвращает данные.

+0

Я думаю, что это должно быть работа. но я еще не объявлял id = primary key. Возможно, это связано с этим вопросом. это может быть причина или нет? –

+0

получите значение строкового запроса и запустите его в базе данных, а затем сообщите мне, что запрос одобрен или нет. Но это не связано с первичным ключом. Это необязательно, но полезно иметь один pk в одной таблице –

+0

когда я написал Строковый запрос = "SELECT * FROM PARKTABLE WHERE ID = '126678'"; его работы прекрасны и получают красное значение в поле ввода, но когда я написал Строковый запрос = "SELECT * FROM PARKTABLE WHERE ID = 'dbId'"; это возврат пустой коробка ввода. –

2

Три изменения необходимы

String placeOne = null; // declare here 
    String placeTwo = null; 
    if (rs.next()) 
    { 
    placeOne = rs.getString("Place1"); // set value here 
    placeTwo = rs.getString("Place2"); 
    System.out.println("place1" +placeOne); 
    System.out.println("place1" +placeTwo); 
    } 
    %> 
    </br> 
    <input type="text" name="pl1value" value=''<%=placeOne%>' /> // print here 
+0

Нет, не работает должным образом сейчас p1value = null –

+0

@FatimaEman, да, это работа! Но вам нужно понять свою логику программы, а также убедиться, что ваш запрос верен или нет. –

+0

Я еще не сделал id = первичный ключ. это может быть причиной ?? –

0

Как страшные Wombat и Ye Win сообщения, они логически правильны. Если бы я был вами, я бы использовал PreparedStatement, а не Statement. и я буду использовать инструкцию while, а не if. см. мой код ниже.

 String dbId = request.getParameter("takei"); 
     Class.forName("org.apache.derby.jdbc.ClientDriver"); 
     String url= "jdbc:derby://localhost:1527/sample;create=true; user=app; password=app"; 
     Connection con = DriverManager.getConnection(url); 
     String query = "SELECT * FROM PARKTABLE WHERE ID = ?"; 
     PreparedStatement st= con.prepareStatement(query); 
     st.setString(0,dbId); 
     ResultSet rs = st.executeQuery(); 

     String placeOne = null; 
     String placeTwo = null; 

     while (rs.next()) { 
      String placeOne = rs.getString("Place1"); 
      String placeTwo = rs.getString("Place2"); 
      System.out.println("place1" +placeOne); 
      System.out.println("place1" +placeTwo); 
     } 

Я использую PreparedStatement для предотвращения SQL-инъекции, как вы делали на вашем заявлении, но это более читаемым и чистым, когда другой программист видеть. Я использовал для получения всех результатов в вашем ResultSet.

Смежные вопросы