替换特殊字符?在具有列表的特定元素的字符串中

Sri*_*har 0 java sql jdbc prepared-statement

我有一个字符串,这是一个插入语句,我需要替换特殊字符?从列表中的特定元素.查询字符串是

insert into OPRS_VEHICLE(VEHICLE_ID, DEPOT_ID, SERVICE_TYPE_ID, REGISTRATION_KEY,
                          REGISTRATION_NO, IS_ACTIVE,CREATED_BY, CREATED_DATE,
                          MODIFIED_BY, MODIFIED_DATE) values(?,?,?,?,?,?,?,?,?,?)
Run Code Online (Sandbox Code Playgroud)

现在我需要更换每个?包含值的列表中包含特定元素的字符.

我试过这个

int index = query.indexOf("?");
for (int j = 0; j < list.size(); j++) {
     formattedQuery = query.replace(query.substring(index, index+1), 
                                    list.get(j).toString());
}
Run Code Online (Sandbox Code Playgroud)

我需要更换?与列表的相应值.

编辑

try{
            conn.setAutoCommit(false);
            if(query != null){  
                ps = conn.prepareStatement(query);
                for (int i = 0; i < myCollection.size(); i++) {
                    List list = (List) myCollection.get(i);
                    int count = 1;
                    for (int j = 0; j < list.size(); j++) {                     
                        if(list.get(j) instanceof Timestamp) {
                            ps.setTimestamp(count,  (Timestamp) list.get(j));       
                        } else if(list.get(j) instanceof java.lang.Character) {
                            ps.setString(count, String.valueOf(list.get(j)));
                        }
                        else {
                            ps.setObject(count, list.get(j));
                        }
                        count++;
                    }
                    try {
                        ps.execute();
                    } catch (Exception e) {


                        }
Run Code Online (Sandbox Code Playgroud)

如果预处理语句的执行失败,那么我需要调用一个方法,该方法接受整个集合列表并一次插入一个语句并提交.这该怎么做 ?(或)我认为是什么,因为我知道数组的大小,我可以将数组分成一半大小,然后为此准备语句并插入它?哪一个更好又安全?有可能这样做吗?

提前致谢

Man*_*qui 5

您拥有的查询字符串实际上是如何在JDBC中表示具有动态值的SQL语句的示例.请参阅以下示例,其中PreparedStatement包含有关如何?使用适当的值替换查询字符串中的字符的文档:

PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
Run Code Online (Sandbox Code Playgroud)

您还可以看看这里 Oracle的JDBC基础知识教程.