@@ -88,49 +88,50 @@ abstract class SQLiteExecutor protected constructor(protected val dbFile: File,
8888 return executeQuerySync(query)
8989 }
9090
91- fun executeQuerySync (query : Query ): QueryResult {
92- val connection = getConnection() ? : let {
93- query.statusCode = Query .StatusCode .FAILED
94- return QueryResult (Query .StatusCode .FAILED , null )
95- }
96-
97- try {
98- val preparedStatement = query.createPreparedStatement(connection)
99- var resultSet: ResultSet ? = null
100-
101- if (query.statement.startsWith(" INSERT" ) ||
102- query.statement.startsWith(" UPDATE" ) ||
103- query.statement.startsWith(" DELETE" ) ||
104- query.statement.startsWith(" CREATE" ) ||
105- query.statement.startsWith(" ALTER" )
106- ) {
107- preparedStatement.executeUpdate()
108- preparedStatement.close()
109- connection.close()
110- } else {
111- resultSet = preparedStatement.executeQuery()
112- }
113-
114- if (resultSet != null ) {
115- query.complete(resultSet)
116- }
117-
118- query.statusCode = Query .StatusCode .FINISHED
119- return QueryResult (Query .StatusCode .FINISHED , resultSet)
120- } catch (e: SQLException ) {
121- connection.close()
122- onQueryFail(query)
123- e.printStackTrace()
124-
125- query.increaseFailedAttempts()
126- if (query.failedAttempts > failAttemptRemoval) {
127- onQueryRemoveDueToFail(query)
128- query.statusCode = Query .StatusCode .FINISHED
129- return QueryResult (Query .StatusCode .FINISHED , null )
91+ private fun executeQuerySync (query : Query ): QueryResult {
92+ getConnection().use { connection ->
93+ try {
94+ val preparedStatement = query.createPreparedStatement(connection)
95+
96+ val isUpdate = query.statement.startsWith(" INSERT" ) ||
97+ query.statement.startsWith(" UPDATE" ) ||
98+ query.statement.startsWith(" DELETE" ) ||
99+ query.statement.startsWith(" CREATE" ) ||
100+ query.statement.startsWith(" ALTER" )
101+ var resultSet: ResultSet ? = null
102+
103+ if (isUpdate) {
104+ preparedStatement.closeOnCompletion()
105+ preparedStatement.executeUpdate()
106+ preparedStatement.close()
107+ }
108+ else {
109+ resultSet = preparedStatement.executeQuery()
110+ }
111+
112+ if (resultSet != null ) {
113+ query.complete(QueryResult (StatusCode .FINISHED , connection, resultSet))
114+ }
115+
116+ query.statusCode = StatusCode .FINISHED
117+ return QueryResult (StatusCode .FINISHED , connection, resultSet)
118+ } catch (e: SQLException ) {
119+ onQueryFail(query)
120+ e.printStackTrace()
121+
122+ query.increaseFailedAttempts()
123+ if (query.failedAttempts > failAttemptRemoval) {
124+ onQueryRemoveDueToFail(query)
125+
126+ query.statusCode = StatusCode .FINISHED
127+ return QueryResult (StatusCode .FINISHED , connection, null )
128+ }
129+
130+
131+ query.statusCode = StatusCode .FAILED
132+ return QueryResult (StatusCode .FAILED , connection, null )
130133 }
131134 }
132- query.statusCode = Query .StatusCode .FAILED
133- return QueryResult (Query .StatusCode .FAILED , null )
134135 }
135136
136137 protected fun tick () {
@@ -143,7 +144,7 @@ abstract class SQLiteExecutor protected constructor(protected val dbFile: File,
143144 }
144145
145146 val queryResult = executeQuerySync(query)
146- if (queryResult.statusCode != Query . StatusCode .NOT_STARTED ) {
147+ if (queryResult.statusCode != StatusCode .NOT_STARTED ) {
147148 queries.removeFirstOrNull()
148149 }
149150 break
0 commit comments