java - 从数据库中获取值

标签 java mysql jdbc

我有一个名为“customer”的 mysql 表。 serialnumber(int), name(varchar), gender(varchar) 为表字段。

我有一个 int 变量 a = 2。

我想在 serialnumber = a 时从表中获取值。也就是说,当 serialnumber = 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);}             

这对我没有任何影响。但是当我在 rs.execute 查询中给出数字而不是 a 时,它会显示客户名称。如何解决这个问题,我的错误是什么??

谢谢

最佳答案

您将 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

关于java - 从数据库中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348907/

相关文章:

mysql - 是否有任何版本的 SQL 允许这种连接?

java - java聊天服务器中的连接池

java - AST eclipse,带参数的方法调用

java - 将 XML 文件与其他 PDF 文件一起附加在 zip 文件中

mysql - 使用 MySQL 为交叉表提取第二个值

mysql - 数据从MySQL实时迁移到elasticsearch?

java - 如何为只有参数化构造函数的类创建对象?

java - 调用getNextException查看原因: How to make Hibernate/JPA show the DB server message for an exception

java - 无法使用 JDBC 从 MySQL 数据库获取新生成的主键

java - 多个方法调用中何时关闭连接