diff options
Diffstat (limited to 'src/org/traccar/database/QueryBuilder.java')
-rw-r--r-- | src/org/traccar/database/QueryBuilder.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/org/traccar/database/QueryBuilder.java b/src/org/traccar/database/QueryBuilder.java index 23d8c6bfa..5e5c163a3 100644 --- a/src/org/traccar/database/QueryBuilder.java +++ b/src/org/traccar/database/QueryBuilder.java @@ -41,14 +41,18 @@ public class QueryBuilder { private PreparedStatement statement; private final String query; - private QueryBuilder(DataSource dataSource, String query) throws SQLException { + private QueryBuilder(DataSource dataSource, String query, boolean returnGeneratedKeys) throws SQLException { indexMap = new HashMap<String, List<Integer>>(); connection = dataSource.getConnection(); this.query = query; if (query != null) { - String parsedQuery = parse(query, indexMap); + String parsedQuery = parse(query.trim(), indexMap); try { - statement = connection.prepareStatement(parsedQuery, Statement.RETURN_GENERATED_KEYS); + if (returnGeneratedKeys) { + statement = connection.prepareStatement(parsedQuery, Statement.RETURN_GENERATED_KEYS); + } else { + statement = connection.prepareStatement(parsedQuery); + } } catch (SQLException error) { connection.close(); throw error; @@ -115,9 +119,13 @@ public class QueryBuilder { return parsedQuery.toString(); } - + public static QueryBuilder create(DataSource dataSource, String query) throws SQLException { - return new QueryBuilder(dataSource, query); + return new QueryBuilder(dataSource, query, false); + } + + public static QueryBuilder create(DataSource dataSource, String query, boolean returnGeneratedKeys) throws SQLException { + return new QueryBuilder(dataSource, query, returnGeneratedKeys); } private List<Integer> indexes(String name) { |