private void initParas(String sql, List<Object> paras) throws SQLException { stmt = cont.prepareStatement(sql); if (paras != null && paras.size() > 0) { int index = 1; for (int i = 0; i < paras.size(); i++) { stmt.setObject(index++, paras.get(i)); } } }
时间: 2024-04-04 13:34:43 浏览: 15
这段代码是用来初始化 SQL 语句中的参数的。它接受两个参数,第一个参数是 SQL 语句,第二个参数是参数列表。在方法中,它首先创建一个 PreparedStatement 对象(使用 Connection.prepareStatement() 方法),然后将参数列表中的参数设置到 PreparedStatement 对象中(使用 PreparedStatement.setObject() 方法)。最后,它将 PreparedStatement 对象返回,以便后续执行 SQL 语句。这段代码的作用是防止 SQL 注入攻击,因为它使用 PreparedStatement 对象来执行 SQL 语句,而不是直接将参数拼接到 SQL 语句中。
相关问题
public List<Map<String, Object>> query(String sql, List<Object> paras){ List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>(); try { intConnect(); initParas(sql, paras); ResultSet result = stmt.executeQuery(); resultList = convertResultSetToMapList(result); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("???query????????"+sql+"??"); } finally{ close(); } return resultList; }
这段代码是用来查询数据库中的多行数据,并将结果集以List<Map<String, Object>>的形式返回。其中,参数sql表示查询语句,paras表示查询语句中的参数。该方法会将参数设置到PreparedStatement中,并执行查询操作。如果查询结果不为空,则将结果转换为List<Map<String, Object>>形式并返回;否则返回空的List。该方法使用了try-catch-finally结构,确保在任何情况下都会关闭数据库连接。
public Map<String, Object> queryOneRow(String sql, List<Object> paras) { Map<String, Object> oneRow = new HashMap<String, Object>(); try { intConnect(); initParas(sql, paras); ResultSet result = stmt.executeQuery(); List<Map<String, Object>> resultList = convertResultSetToMapList(result); if (resultList.size() > 0) { oneRow = resultList.get(0); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); System.out.println("???queryOneRow????????"+sql+"??"); } finally{ close(); } return oneRow; }
这段代码是用来查询数据库中的一行数据,并将结果以Map形式返回。其中,参数sql表示查询语句,paras表示查询语句中的参数。该方法会将参数设置到PreparedStatement中,并执行查询操作。如果查询结果不为空,则将结果转换为Map形式并返回;否则返回空的Map。该方法使用了try-catch-finally结构,确保在任何情况下都会关闭数据库连接。