Java 在mysql中插入变量
我正在尝试发送获取的城市是拉合尔的餐馆,Rwp等(用户将在表单中输入的内容)。 但我什么也没得到。 如果我在查询中硬编码并自己输入城市名称,那么它会工作,否则它不会返回任何内容。 当我尝试添加任何内容时,我也会遇到同样的问题 基本上我需要在mysql查询中使用变量的帮助 我做错了什么Java 在mysql中插入变量,java,mysql,database,Java,Mysql,Database,我正在尝试发送获取的城市是拉合尔的餐馆,Rwp等(用户将在表单中输入的内容)。 但我什么也没得到。 如果我在查询中硬编码并自己输入城市名称,那么它会工作,否则它不会返回任何内容。 当我尝试添加任何内容时,我也会遇到同样的问题 基本上我需要在mysql查询中使用变量的帮助 我做错了什么 public ResultSet getRestaurants(String city){ Statement statement; try { statement = con.cr
public ResultSet getRestaurants(String city){
Statement statement;
try {
statement = con.createStatement();
String query = "select * from restaurantinfo WHERE city = '"+city+"'";
ResultSet rs = statement.executeQuery(query);
return rs;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
这是处理结果集。我知道有错误。我会修复它们。我关心的是显示餐厅
按菜系筛选
快餐
巴基斯坦语
交货期:
免费的
首先-您传递结果集而不是直接处理结果集似乎有些奇怪。请共享处理结果集的代码-可能错误就在这一部分
您的方法:请使用PraveReDeX代替此变体:
public ResultSet getRestaurants(String city){
try {
System.out.println("CITY: " + city);
PreparedStatement ps = con.prepareStatement(
"select * from restaurantinfo WHERE city = ?");
//Set first ? with value of city
ps.setString(1, city);
//return resultset
return statement.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
非常感谢@jan的帮助 顺便说一句,我把名字改成了“cityname”就解决了这个问题。我不知道为什么它会起作用。。 是的,另一个数据库也通过添加name属性来工作 为此,我将city更改为cityname。虽然很奇怪,但它确实有效。我认为id和名称可能应该不同。当然,我还必须更改请求参数
<input id="city" type="text" name="cityname" />
一般来说,看起来不错。city是否有任何前导/尾随空格?可能有助于在运行查询之前打印出查询,并准确查看其外观。我已添加了处理结果集的代码。我已编辑了帖子。我已添加了处理结果集的代码。我已编辑了“city”的帖子参数实际上是一个字符串?你是从组合框()中得到的吗还是从一个输入字段?如果你从一个组合框中得到它,你应该考虑将ID分配给城市并由这些ID查询。一个编辑:打印出我们放在SQL语句中的城市。我最好的猜测是,你有编码故障,所以你收到一些与你的数据库中不匹配的字符串。它的打印无效。我使用输入字段BTW。