我需要使用Fillo Object在Java中对SQL查询进行参数化。
Fillo fillo=new Fillo();
Connection connection=fillo.getConnection("C:\\Jeerdd\\Test.xlsx");
String strQuery="Select * from Sheet1";
Recordset recordset=connection.executeQuery(strQuery);
String y = "XYX"
while(recordset.next()){
String dd = recordset.getField("ID");
String strQuery1="Update Sheet1 Set Results = 'y' where ID="+dd;
//String strQuery1="Update Sheet1 Set Results="+y"and Time ="+xx" where ID="+dd;
System.out.println(strQuery1);
connection.executeUpdate(strQuery1);
}
我想参数化下面尝试使用的结果和ID这两个值,但是它们都不起作用。
String strQuery1="Update Sheet1 Set Results = 'y' where ID="+dd;
OR
String strQuery1="Update Sheet1 Set Results = "+y+" where ID="+dd;
我不想使用Prepared语句。有人可以帮我解决我做错的地方吗?
答案 0 :(得分:0)
据我了解,我什至看不到选择的重点。而是直接对整个表进行更新:
Fillo fillo = new Fillo();
Connection connection = fillo.getConnection("C:\\Jeerdd\\Test.xlsx");
String sql = "UPDATE Sheet1 SET Results = 'y'";
connection.executeUpdate(sql);
答案 1 :(得分:0)
我认为您的方法不好,在您的情况下有更多的机会进行sql注入
您可以简单地使用
之类的JPA命名参数String strQuery1="Update Sheet1 Set Results = :reults where ID= :id;
Query updateQuery = entityManager
.createNativeQuery(strQuery1);
updateQuery.setParameter("reults", y);
updateQuery.setParameter("id", dd);
updateQuery.executeUpdate();
答案 2 :(得分:0)
Fillo中的这段代码对我有用,
“ Update Sheet1 Set Results ='” + field_Value +“'其中ID ='” + field_Name +“'”;
下面是完整的代码
public static void statusUpdateTest(String field_Name, String field_Value) throws Throwable {
Fillo fillo = new Fillo();
Connection connection = null;
try {
String excelPath = "C:\\Book\\Test.xlsx";
connection = fillo.getConnection(excelPath);
String strQuery = "Update Sheet1 Set Results='"+field_Value+"' where ID='"+field_Name+"'";
connection.executeUpdate(strQuery);
connection.close();
} catch (Exception e) {
throw new Exception(ExceptionUtils.getFullStackTrace(e));
} finally {
Objects.requireNonNull(connection).close();
}
}