private void clearPreparedStatementCache() { for (ISQLitePreparedStatement statement : trackedPreparedInserts) { statement.close(); } trackedPreparedInserts.clear(); preparedInsertCache = newPreparedInsertCache(trackedPreparedInserts); }
@Override public Void visitBlob(Property<byte[]> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { byte[] val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindBlob(data.index, val); } return null; } }
@Override public Void visitDouble(Property<Double> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { Double val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindDouble(data.index, val); } return null; }
@Override public Void visitBoolean(Property<Boolean> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { Boolean val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindLong(data.index, val ? 1 : 0); } return null; }
@Override public Void visitString(Property<String> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { String val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindString(data.index, val); } return null; }
insertCache.getPreparedInsert(this, table, conflictAlgorithm); item.bindValuesForInsert(table, preparedStatement); newRow = preparedStatement.executeInsert(); } finally { releaseNonExclusiveLock();
public void testOnCloseHook() { final AtomicReference<ISQLitePreparedStatement> preparedStatementRef = new AtomicReference<>(); testHookDatabase.onCloseTester = new DbHookTester() { @Override void onHookImpl(ISQLiteDatabase db) { assertTrue(db.isOpen()); ISQLitePreparedStatement statement = preparedStatementRef.get(); assertNotNull(statement); statement.close(); preparedStatementRef.set(null); } }; preparedStatementRef.set(testHookDatabase.prepareStatement("SELECT COUNT(*) FROM testModels")); assertNotNull(preparedStatementRef.get()); assertEquals(0, preparedStatementRef.get().simpleQueryForLong()); testHookDatabase.close(); assertTrue(testHookDatabase.onCloseTester.wasCalled); assertNull(preparedStatementRef.get()); }
@Override public Void visitInteger(Property<Integer> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { Integer val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindLong(data.index, val); } return null; }
@Override public Void visitString(Property<String> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { String val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindString(data.index, val); } return null; }
insertCache.getPreparedInsert(this, table, conflictAlgorithm); item.bindValuesForInsert(table, preparedStatement); newRow = preparedStatement.executeInsert(); } finally { releaseNonExclusiveLock();
@Override public Void visitDouble(Property<Double> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { Double val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindDouble(data.index, val); } return null; }
@Override public Void visitBlob(Property<byte[]> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { byte[] val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindBlob(data.index, val); } return null; } }
@Override void onHookImpl(ISQLiteDatabase db) { assertTrue(db.isOpen()); ISQLitePreparedStatement statement = preparedStatementRef.get(); assertNotNull(statement); statement.close(); preparedStatementRef.set(null); } };
void bindValuesForInsert(Table table, ISQLitePreparedStatement preparedInsert) { LongProperty rowidProperty = getRowIdProperty(); Property<?>[] allProperties = table.getProperties(); ModelAndIndex modelAndIndex = new ModelAndIndex(this); for (Property<?> property : allProperties) { if (property == rowidProperty) { long rowid = getRowId(); if (rowid == TableModel.NO_ID) { preparedInsert.bindNull(modelAndIndex.index); } else { preparedInsert.bindLong(modelAndIndex.index, rowid); } } else { property.accept(valueBindingVisitor, preparedInsert, modelAndIndex); } modelAndIndex.index++; } }
private void clearPreparedStatementCache() { for (ISQLitePreparedStatement statement : trackedPreparedInserts) { statement.close(); } trackedPreparedInserts.clear(); preparedInsertCache = newPreparedInsertCache(trackedPreparedInserts); }
@Override public Void visitInteger(Property<Integer> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { Integer val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindLong(data.index, val); } return null; }
@Override public Void visitBoolean(Property<Boolean> property, ISQLitePreparedStatement preparedStatement, ModelAndIndex data) { Boolean val = data.model.get(property, false); if (val == null) { preparedStatement.bindNull(data.index); } else { preparedStatement.bindLong(data.index, val ? 1 : 0); } return null; }
void bindValuesForInsert(Table table, ISQLitePreparedStatement preparedInsert) { LongProperty rowidProperty = getRowIdProperty(); Property<?>[] allProperties = table.getProperties(); ModelAndIndex modelAndIndex = new ModelAndIndex(this); for (Property<?> property : allProperties) { if (property == rowidProperty) { long rowid = getRowId(); if (rowid == TableModel.NO_ID) { preparedInsert.bindNull(modelAndIndex.index); } else { preparedInsert.bindLong(modelAndIndex.index, rowid); } } else { property.accept(valueBindingVisitor, preparedInsert, modelAndIndex); } modelAndIndex.index++; } }