无法在Java中参数化SQl查询

时间:2019-12-25 05:07:14

标签: java sql

我需要使用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语句。有人可以帮我解决我做错的地方吗?

3 个答案:

答案 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();
    }
}