我的Java中的Sql ResultSet
的值有问题。
该值具有单引号('),并且该值不是有效值。正确的值将是逗号(,)。
我想为逗号(,)改变这个单引号(')。
错误值示例:7'8
预期结果的示例:7,8
我的查询示例和我的ResulSet:
String query = "SELECT width,height FROM SizeTable;";
rs = st.executeQuery(query);
while(rs.next()){
String width = rs.getString(1);
String height = rs.getString(2); <--- Here is on I get the error
}
String insert = "INSERT INTO SizeTable2 (Value1,Value2) VALUES('"+width+"','"+height+"')";
st.executeUpdate(insert);
运行后,我得到一条SQL消息,表明我的SQL语句中出现了无效的语法错误(我想“插入”宽度和高度值)。 我不能用MySQL改变这个角色,只能用Java。
答案 0 :(得分:0)
您可以在获得输入时使用String::replace
:
String height = rs.getString(2).replace("'", ",");
您必须在循环外声明变量,以便以后可以使用它们:
String width = "";
String height = "";
while(rs.next()){
width = rs.getString(1);
height = rs.getString(2).replace("'", ",");
}
现在你的SQL开放了SQL注入或语法错误,为了避免这种情况,我建议改为使用PreparedStatement:
String insert = "INSERT INTO SizeTable2 (Value1,Value2) VALUES(?, ?)";
try (PreparedStatement insert = connection.prepareStatement(insert)) {
insert.setString(1, width);
insert.setString(2, height);
insert.executeUpdate();
}
注意你可以插入一个空值,所以我建议在插入之前检查值:
if(!width.isEmpty() && !height.isEmpty()){
//prepared statement
}
第二件事,我假设我们使用实数来表示宽度和高度,所以为什么你要使用字符串,我建议改变你的数据类型,这样你就可以避免所有这些问题。