Извлечение значения из базы данных - PullRequest
1 голос
/ 02 декабря 2011

У меня есть таблица mysql с именем 'customer'. серийный номер (int), имя (varchar), пол (varchar) - поля таблицы.

У меня есть переменная int a = 2.

Я хочу получить значение из таблицы, когда serialnumber = a. То есть когда серийный номер = 2, на нем должно отображаться имя конкретного клиента.

String url="jdbc:mysql://localhost/shopping";
String usr ="root";
String pass = "rootpassword";

session.setAttribute( "URL", url );
session.setAttribute( "user", usr );
session.setAttribute( "passwd", pass );

String connectionURL = (String)session.getAttribute( "URL" );
String user = (String)session.getAttribute("user");
String passwd = (String)session.getAttribute("passwd");
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      connection = DriverManager.getConnection(connectionURL, user, passwd);
      statement = connection.createStatement();

rs=statement.executeQuery("select * from customer where serialnumber like '%a%' ");

      while (rs.next()) {
      out.println("Customer Name: ");
      out.println(rs.getString("name")); 
     }rs.close();
    }catch(Exception ce){out.println(ce);}             

Это ничего не бросает мне. Но когда я даю номер вместо a в запросе rs.execute, он отображает имя клиента. Как это решить и в чем моя ошибка ??

Спасибо

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Вы рассматриваете a как литерал, а не переменную. Вам нужно будет обновить запрос следующим образом:

executeQuery("SELECT * FROM customer WHERE serialnumber LIKE '%" + a + "%' ");

Я не включил rs = statement. для краткости и для удаления прокрутки. Вам все еще нужно это для вашего решения.


@ ypercube делает хорошее замечание: если вы хотите увидеть, когда серийный номер точно равен 2:

rs = statement.executeQuery("SELECT * FROM customer WHERE serialnumber = " + a);

Кроме того, если вы используете только поле name, вы не должны SELECT *, а вместо этого SELECT name

0 голосов
/ 02 декабря 2011

Не думаю, что LIKE подходит для целочисленного столбца, даже если он работает. Вот более официальная / эффективная / безопасная версия:

String selectString = "SELECT * FROM customer WHERE serialnumber = ?";
selectStm = connection.prepareStatement(selectString);
selectStm.setInt(1, a.intValue());
rs = selectStm.executeQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...