diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2012-10-23 10:31:29 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2012-10-23 10:31:29 +1300 |
commit | f151afb7046c79184bbb9dcf1215a99731728599 (patch) | |
tree | ae5ee7fad2a3d23de6d94b6f0a0a4d699376117a /src/org/traccar/helper/NamedParameterStatement.java | |
parent | 0af1cebf1e2f3f719edf5391252fcd4004a75157 (diff) | |
download | trackermap-server-f151afb7046c79184bbb9dcf1215a99731728599.tar.gz trackermap-server-f151afb7046c79184bbb9dcf1215a99731728599.tar.bz2 trackermap-server-f151afb7046c79184bbb9dcf1215a99731728599.zip |
Reset connection on error (fix #52)
Diffstat (limited to 'src/org/traccar/helper/NamedParameterStatement.java')
-rw-r--r-- | src/org/traccar/helper/NamedParameterStatement.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/org/traccar/helper/NamedParameterStatement.java b/src/org/traccar/helper/NamedParameterStatement.java index 0dfbb9551..cbbc187da 100644 --- a/src/org/traccar/helper/NamedParameterStatement.java +++ b/src/org/traccar/helper/NamedParameterStatement.java @@ -40,6 +40,8 @@ public class NamedParameterStatement { * Database connection */ private AdvancedConnection connection; + + private int autoGeneratedKeys; /** * Initialize statement @@ -106,15 +108,30 @@ public class NamedParameterStatement { return parsedQuery.toString(); } + + public void reset(boolean resetConnection) throws SQLException { + if (statement != null) { + statement.close(); + statement = null; + } + if (resetConnection) { + connection.reset(); + } + statement = connection.getInstance().prepareStatement(parsedQuery, autoGeneratedKeys); + } public void prepare(int autoGeneratedKeys) throws SQLException { + this.autoGeneratedKeys = autoGeneratedKeys; try { if (statement == null) { - statement = connection.getInstance().prepareStatement(parsedQuery, autoGeneratedKeys); + reset(false); + } else if (statement.getWarnings() != null) { + reset(true); } } catch (SQLException error) { - connection.reset(); - statement = connection.getInstance().prepareStatement(parsedQuery, autoGeneratedKeys); + Log.info("Exception during query preparation"); + Log.warning(error.getMessage()); + reset(true); } } |