我有一个名为“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/