Java按名字set jdbc参数类

来源:互联网 发布:如何代理淘宝优惠券 编辑:程序博客网 时间:2024/06/05 00:10

PreparedStatement只能按?设置参数,简单写了一个按名字设置参数的类,实际用了PreparedStatement,简单写了,可以扩充,没有测试

public class NamedStatement {private Pattern NAME_PARSE = Pattern.compile("(:\\w+)");private PreparedStatement statement;private String sql;private Map<String, Integer> names;public NamedStatement(Connection conn, String sql) throws SQLException {parse(sql);statement = conn.prepareStatement(this.sql);}public void setString(String name, String value) throws SQLException {statement.setString(names.get(name), value);}public void setInt(String name, int value) throws SQLException {statement.setInt(names.get(name), value);}..........public void close() throws SQLException {statement.close();statement = null;}private void parse(String query) {int index = 1;int pos = 0;StringBuilder sb = new StringBuilder();Matcher matcher = NAME_PARSE.matcher(query);while (matcher.find()) {String s = matcher.group();int start = matcher.start();int end = matcher.end();sb.append(query.substring(pos, start));sb.append('?');pos = end;names.put(s, index++);}sb.append(query.substring(pos, query.length()));this.sql = sb.toString();}}


这样使用

String sql = "select * from  table where a=:a and b=:param and c=5

NamedStatement s = new NamedStatement (conn, sql);

s.....


0 0
原创粉丝点击