ORMLite Android functionality used in conjunction with ormlite-core

Overview

ORMLite Android

This package provides the Android specific functionality. You will also need to download the ormlite-core package as well. Users that are connecting to SQL databases via JDBC connections should download the ormlite-jdbc package instead of this Android one.

Enjoy, Gray Watson

Comments
  • Add an Android CursorLoader and CursorAdapter implementation

    Add an Android CursorLoader and CursorAdapter implementation

    Using OrmLite on Android requires more code than it seems like it should. This pull request implements a fairly standard Loader and Adapter to make ormlite easy to use with contemporary Android paradigms like Fragments.

    It relies on PR https://github.com/j256/ormlite-core/pull/17 in ormlite-core to facilitate the notification aspect of Android Loaders and Adapters.

    Sample app is available here: https://github.com/emmby/ormlite-pr8-sample

    opened by emmby 49
  • Loader implementations for ORMLite

    Loader implementations for ORMLite

    I usually use Loaders when populating lists with data, so I've made a couple of Loader implementations for executing queries. There are more ways to query the database in ORMLite, so I'm planning to add more implementations, or maybe find a more generic way to cover all use-cases.

    Please let me know if there's anything I can add like unit tests or additional documentation. Thank you.

    opened by Egorand 25
  • Caused by: java.lang.IllegalArgumentException: Could not find appropriate get method for private XXX.id

    Caused by: java.lang.IllegalArgumentException: Could not find appropriate get method for private XXX.id

    Hi,

    I am encountering this exception which i don't understand.

    Caused by: java.lang.IllegalArgumentException: Could not find appropriate get method for private 
    java.lang.String com.xx.xx.xx.json.XXX.id
    

    In my XXX pojo, getId method was defined, so i don't understand why this happens, anyone could shed some light on it?

        @DatabaseField(columnName = Table.Columns.ID, id = true, useGetSet = true, unique = true)
        private String id;
    
        public String getId() {
            return aggregateStart.getTime() + "-" + aggregateEnd.getTime() + "-" + aggregateInterval;
        }
    
        public void setId(final String id) {
            this.id = id;
        }
    

    is id not allowed as String instead of int? or getId cannot return concatenated string? Thanks!

    opened by jianinz 17
  • cannot rollback - no transaction is active (code 1) in RuntimeExceptionDao#callBatchTasks

    cannot rollback - no transaction is active (code 1) in RuntimeExceptionDao#callBatchTasks

    The following exception has been encountered:

    android.database.sqlite.SQLiteException: cannot rollback - no transaction is active (code 1)
        at android.database.sqlite.SQLiteConnection.nativeExecute(Native Method)
        at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:679)
        at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:439)
        at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401)
        at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:522)
        at com.j256.ormlite.android.AndroidDatabaseConnection.setAutoCommit(SourceFile:77)
        at com.j256.ormlite.misc.TransactionManager.callInTransaction(SourceFile:197)
        at com.j256.ormlite.stmt.StatementExecutor.callBatchTasks(SourceFile:553)
        at com.j256.ormlite.dao.BaseDaoImpl.callBatchTasks(SourceFile:633)
        at com.j256.ormlite.dao.RuntimeExceptionDao.callBatchTasks(SourceFile:534)
    

    ormlite-android:4.48 ormlite-core:4.48 Android: 4.1.2 Only DB operations in Callable are createOrUpdate.

    opened by koral-- 15
  • Error when run android application

    Error when run android application

    Hi! I receive sometime some error when run application.

    java.lang.NullPointerException at com.j256.ormlite.field.FieldType.resultToJava(FieldType.java:819) at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:60) at com.j256.ormlite.android.AndroidDatabaseConnection.queryForOne(AndroidDatabaseConnection.java:196) at com.j256.ormlite.stmt.mapped.MappedQueryForId.execute(MappedQueryForId.java:38) at com.j256.ormlite.field.FieldType.assignField(FieldType.java:558) at com.j256.ormlite.stmt.mapped.BaseMappedQuery.mapRow(BaseMappedQuery.java:71) at com.j256.ormlite.stmt.SelectIterator.getCurrent(SelectIterator.java:270) at com.j256.ormlite.stmt.SelectIterator.nextThrow(SelectIterator.java:161) at com.j256.ormlite.stmt.StatementExecutor.query(StatementExecutor.java:202) at com.j256.ormlite.stmt.StatementExecutor.queryForAll(StatementExecutor.java:118) at com.j256.ormlite.dao.BaseDaoImpl.queryForAll(BaseDaoImpl.java:241) at com.****.core.database.dao.ShoppingCartDAO.getAll(ShoppingCartDAO.java:199)

    I write logic like this guide:: http://habrahabr.ru/post/143431/

    opened by evgenybozhko2 11
  • Fix of trying to close Cursor twice

    Fix of trying to close Cursor twice

    The warning Android prints in logcat is: Close cursor android.database.sqlite.SQLiteCursor on null twice or more

    SA: http://stackoverflow.com/questions/25245249/ormlite-sqlitecursor-close-cursor-on-null-twice-or-more

    opened by dant3 9
  • security issue -SQL Injection

    security issue -SQL Injection

    Hello, We use the lib in our application. Some company did security review our application. And it found sql injection issue in code of ormlite-android.

    Part information from report:

    Explanation When carried out against a client-side database, SQL injection can result in the bypassing of authentication/authorization and data corruption or exposure. The impact of a specific SQL injection vulnerability relies on the manner in which the target database is used by the application. Client-side SQL injection is often rated much lower-risk than server-side SQL injection but still may have a profound impact on multi-user applications. Any instance of rawQuery or execSQL that appeared to use format strings or concatentation was flagged by this check. com/j256/ormlite/android/AndroidDatabaseConnection.java : Cursor cursor = this.db.rawQuery("SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name = '" + string + "'", null); Execution Review the application for any locations where dynamic text is used in SQL statements via format strings. Recommendation Use parameterized queries. References OWASP Mobile Top 10 2012-M4 Client Side Injection: https://www.owasp.org/index.php/Mobile_Top_10_2012-M4_Client_Side_Injection

    Could you fix the issue ?

    opened by psedoykin 7
  • Attempt to invoke interface method 'int com.j256.ormlite.dao.Dao.create'

    Attempt to invoke interface method 'int com.j256.ormlite.dao.Dao.create'

    hi i used this library and released very well but when i want to save db this error appear Attempt to invoke interface method 'int com.j256.ormlite.dao.Dao.create' plz help me :(

    opened by mostafaolyai 7
  • Watch for changes to the underlying dataset

    Watch for changes to the underlying dataset

    Loaders are supposed to watch for changes to the underlying dataset. Use Dao.registerObserver and Dao.unregisterObserver to start and stop watching for changes.

    opened by emmby 7
  • IllegalStateException: attempt to re-open an already-closed object

    IllegalStateException: attempt to re-open an already-closed object

    I have an error "IllegalStateException: attempt to re-open an already-closed object" in multi thread by android 9.0.

    I closed the connectionSource in each query. like this:

    ConnectionSource cs = cf.getConnectionSource();
    try {
        UserDao userDao = new UserDao(cs);
        userDao.deleteAll();
    } catch (Exception e) {
        throw e;
    } finally {
        try {
            cs.close();
        } catch (SQLException e) {
            logger.error("Exception:" + e);
        }
    }
    

    Any ideas?

    question 
    opened by me73123 6
  • Android's Cursor did not implement Closeable until API Level 16, causes Exception

    Android's Cursor did not implement Closeable until API Level 16, causes Exception

    According to https://developer.android.com/sdk/api_diff/16/changes/android.database.Cursor.html , the Closeable interface was not added until API Level 16.

    So the change in 28500b361072ab4c79f7448c32129495aaa279ef causes a runtime exception:

    java.lang.IncompatibleClassChangeError: interface not implemented
            at com.j256.ormlite.misc.IOUtils.closeQuietly(IOUtils.java:20)
            at com.j256.ormlite.android.AndroidDatabaseConnection.queryForLong(AndroidDatabaseConnection.java:247)
            at com.j256.ormlite.stmt.StatementExecutor.ifExists(StatementExecutor.java:647)
    

    I discovered this running the ormlite-android from the current master on an Android 4.0.4 phone.

    opened by efung 6
  • Duplicate classes and files when depending on a project using ormlite-core

    Duplicate classes and files when depending on a project using ormlite-core

    Our Android project uses ormlite-android and depends on another project that uses ormlite-core.

    The base dependency includes ormlite with: implementation ("com.j256.ormlite:ormlite-core:6.1")

    And the Android project includes ormlite with: implementation ("com.j256.ormlite:ormlite-android:6.1")

    When building the Android project, we get the following errors:

    > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
       > Duplicate class com.j256.ormlite.dao.BaseDaoImpl found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseDaoImpl$1 found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseDaoImpl$2 found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseDaoImpl$3 found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseDaoImpl$4 found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseDaoImpl$5 found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseDaoImpl$6 found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.BaseForeignCollection found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.CloseableIterable found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.CloseableIterator found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.CloseableSpliterator found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.CloseableSpliteratorImpl found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.CloseableWrappedIterable found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
         Duplicate class com.j256.ormlite.dao.CloseableWrappedIterableImpl found in modules ormlite-android-6.1 (com.j256.ormlite:ormlite-android:6.1) and ormlite-core-6.1 (com.j256.ormlite:ormlite-core:6.1)
    (...)
    com.android.builder.merge.DuplicateRelativeFileException: 2 files found with path 'com/j256/ormlite/core/LICENSE.txt'.
    

    This was working fine with Ormlite 5.x

    opened by aberaud 4
  • [Bug] Using Limit and Offset causes SQL exception.

    [Bug] Using Limit and Offset causes SQL exception.

    I have the following code:

    public Operation getLocalOperation(int mostRecentOperation, int skip) {
    
            try {
    
                Operation operation = databaseHelper.getOperationDao().queryBuilder()
                        .orderBy(Operation.ID_FIELD, true)
                        .offset((long)skip)
                        .where()
                        .isNull(Operation.FOREIGN_USER_FIELD)
                        .and()
                        .ge(Operation.ID_FIELD, mostRecentOperation)
                        .queryForFirst();
    
                return operation;
    
            } catch (SQLException e) {
    
                throw new RuntimeException("Cannot get local operation");
            }
        }
    

    Running this code on Android 30 yields the following exception:

    SELECT * FROMOperationsWHERE (ForeignUserIS NULL ANDId>= 0) ORDER BYIdOFFSET 0 LIMIT 1

    However, the query fails with the following exception and cause:

    Problems executing Android query: SELECT * FROM `Operations` WHERE (`ForeignUser` IS NULL AND `Id` >= 0) ORDER BY `Id` OFFSET 0 LIMIT 1
    near "OFFSET": syntax error (code 1 SQLITE_ERROR[1]): , while compiling: SELECT * FROM `Operations` WHERE (`ForeignUser` IS NULL AND `Id` >= 0) ORDER BY `Id` OFFSET 0 LIMIT 1
    

    I'm using com.j256.ormlite:ormlite-android:6.1 on Android 30 (Samsung Galaxy S9+).

    opened by wojciechsura 3
  • how to join two table?

    how to join two table?

    now, i have a User object and a Role object , it look like this:

    class User {
        private int id;
        private String username;
        private int roleId;
    }
    class Role {
        private int id;
        private String roleName;
    }
    

    i wanna know, how can i serialize it to

     {
        id: 10,
        name: "Jack",
        roleId: 20,
        roleName: "admin"
    }
    

    instead of

    {
        id: 10,
        name: "Jack,
        role: {
            id: 20,
            roleName: "admin"
        }
    }
    
    opened by iobsessu 2
  • log4j

    log4j

    Hi i was attempting to publish a library that uses this library as a dependency. oss.sonatype.org send me a "lift" report that flagged this library as having a few security related issues. It looks like it's related to log4j 1.x.

    Seeing this in the root pom

    yes we know this is an issue but it is here for backwards compatibility
    

    As a user of the library, can we exclude the log4j dependency and have the library still be functional? Alternatively, is there a plan to use some other logging library or a newer version?

    opened by spyhunter99 2
  • Exception when create object with string including single quote

    Exception when create object with string including single quote

    try { Dao<classExample, Integer> dao = getDao(classExample.class); dao.createIfNotExists(obj); } catch (SQLException e) { e.printStackTrace(); } classExample have string, and if I try to insert an object with single quote ('), then it catch exception. In log, we can see that sql request is using single quote to round string values

    opened by Altarus1 2
  • Replaced Android support-v4 library with AndroidX loader library

    Replaced Android support-v4 library with AndroidX loader library

    Replaced deprecated Android support-v4 library with AndroidX loader library

    • Now builds .aar
    • Added .aar plugins for maven
    • Needs Android SDK (just set $ANDROID_HOME environment variable)
    opened by leandroruiz96 14
Releases(ormlite-android-6.1)
  • ormlite-android-6.1(Dec 20, 2021)

  • ormlite-android-6.0(Dec 18, 2021)

    • ALL: Added support for Java 7. Dropped support for Java 6.
    • ALL: Migrated to supporting AutoCloseable. Most close() methods now throw Exception not IOException.
    • CORE: Removed some Deprecated methods that had been with us for a while.
    • CORE: Added closeable-spliterator for better handing of JDK8+ streams. Thanks to zhemaituk.
    • CORE: Add Dao.queryForFirst() convenience method.
    • ANDROID: ormlite-android jar now includes the -core classes. No need to import ormlite-core jar anymore.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.7(Nov 8, 2021)

    • CORE: Fixed possible thread issue around field-name lookups. Thanks to dlew.
    • CORE: Fixed a number of flaky tests based on field order. Thanks CharlesZKQ, NanaOkada, hwang-pku, and chimo173.
    • CORE: Upgraded SimpleLogging code to fix annoying startup messages. Thanks to JayDi85.
    • CORE: Removed broken getCreateTableStatements(DatabaseType, ...). ConnectionSource needed. Thanks to blacatena.
    • CORE: Added WrappedConnectionSource and other support classes for tracing unclosed connections and statements.
    • CORE: Added better support for JDK8+ streams with lazy foreign collections. Thanks to zhemaituk.
    • ANDROID: Fixed bug in number rows affected with executeUpdateDelete() in newer API versions. Thanks to WonShaw.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.6(Nov 8, 2021)

    • CORE: Added support for @Entity storing of Serializable types. Thanks to arn-cpu.
    • CORE: Fixed a bug with nonreentrant handling of DateFormat with the string date types. Thanks to Bob Lacatena.
    • ANDROID: Removed the reflection hack support for pre-ice-cream-sandwich annotation performance.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.5(May 23, 2021)

  • ormlite-android-5.4(May 19, 2021)

    • CORE: Added LoggerFactory.setLogFactory() for supporting other log implementations and added NullLog.
    • CORE: Migrated the internal logging code to SimpleLogging.
    • CORE: Updated H2 version which shook lose a couple of issues in tests and core support.
    • CORE: Added UPDATE and DELETE database-dependent support for TOP and LIMIT. Thanks to juur.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.3(May 19, 2021)

    • CORE: More improvements to the TransactionManager connection and savepoint handling.
    • CORE: Added a getInternalConnection() method to DatabaseConnection to access underlying objects.
    • CORE: Added support for ORDER BY ... NULLS FIRST and LAST. May not be supported by all database types.
    • CORE: Added optimization to AND and OR queries to reduce the parens in the generated query. Thanks to devjta.
    • CORE: Removed some extraneous spaces from generated queries.
    • CORE: Added missing wiring for the TIME_STAMP_STRING data type for storing Timestamp type as a string.
    • CORE: Added support for OneToMany JPA annotation. Thanks to Bo98.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.2(May 19, 2021)

    • CORE: Added support for @DatabaseField(readOnly) boolean for returning non-column fields.
    • CORE: Added @DatabaseField(fullColumnDefinition) for fully describing a column as opposed to columnDefinition.
    • CORE: Added BaseSchemaUtil to print out the schema statements necessary to create a table.
    • CORE: Added the ability for users to set a character set for byte array type. Thanks to noordawod.
    • CORE: Added a Logger.setGlobalLogLevel(...) method to set a global filter on all log messages.
    • CORE: Moved from RETURN_GENERATED_KEYS to named columns for generated ids to be more compatible. Thanks to Bo98.
    • CORE: Significant refactoring to make FieldType and TableInfo not depend on Dao or ConnectionSource.
    • CORE: Improved memory usage by unregistering DAOs associated to a connection source. Thanks to bosborn.
    • CORE: Fixed problem with null field assignment causing a NPE in the resulting message. Thanks to hrach.
    • CORE: Fixed problems with the transaction level thread-local not being handled right. Thanks to Bo98.
    • CORE: Fixed @DatabaseField(fullColumnDefinition) which was completely broken. Thanks to ethanmdavidson.
    • CORE: Fixed default width not being applied for BigInteger. Thanks to Bo98.
    • CORE: Fixed the default mysql driver and made driver loading more forgiving. Thanks to zanella.
    • CORE: Fixed a couple of incorrect SqlTypes in field converters. Thanks to Bo98.
    • CORE: Support schema name qualifiers for tables. Thanks to Fedor Bobin.
    • CORE: Fixed concurrency issues when using iterators. Thanks to MarcMil.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.1(May 19, 2021)

    • CORE: Added synchronized keyword to BaseDaoImpl.createOrUpdate() and createIfNotExists().
    • CORE: Added integer date support. Thanks to noordawod.
    • CORE: Added support for CloseableIterator.moveAbsolute(...). Thanks to renaudcerrato.
    • CORE: Fixed but with get table name not using TableInfo. Thanks to 0xabadea.
    • CORE: Fixed handling of field capitalization which was screwing up Turkish fields. Thanks to folkyatina.
    • CORE: Fixed handling of joined queries with orders and group by's. Thanks much to p91paul.
    • CORE: Fixed bad bug with committing of inner transactions inappropriately. Thanks much to maroux.
    • CORE: Normalized all of the up/down case usage to the DatabaseType so it can be overridden.
    • ANDROID: Added field sorting for more deterministic config file output. Thanks to jibidus.
    Source code(tar.gz)
    Source code(zip)
  • ormlite-android-5.0(May 19, 2021)

    • ALL: ORMLite has dropped support for Java 5. Java 6 is now required.
    • ALL: Added boolean argument to DatabaseConnection.compileStatement(...) to fix a cache bug.
    • ALL: Changed DatabaseResults.getObjectCache() to be getObjectCacheForRetrieve() and getObjectCacheForStore().
    • CORE: Added JOIN-ing between tables without a foreign-object relationship.
    • CORE: Added TimeStampStringType to support Android timestamps.
    • CORE: Added the ability to override the DataPersister as well as the FieldConverter.
    • CORE: Added support for the @Table entity from javax.persistence annotations. Thanks to wener. Bug #174.
    • CORE: Added used of java.io.Closeable to support CloseableIterator and other Java7 support. Thanks to livelazily.
    • CORE: Added Dao.create(Collection) method for bulk creation. Thanks to Farrukh Najmi for the good idea.
    • CORE: Added DataType.BOOLEAN_CHAR (to support '1' '0' or 't' 'f') and BOOLEAN_INTEGER. Thanks to stew.
    • CORE: Added support for QueryBuilder.countOf("DISTINCT(field)"). Thanks to spacetime.
    • CORE: Added support for Java 8 methods. Thanks to VincentFTS.
    • CORE: Added support for Joda DateTime to be able to be a version field. Thanks much to outofrange.
    • CORE: Added support for raw queries using the DatabaseResults in the mapper. Thanks much to nonameplum.
    • CORE: Added support for ENUM_TO_STRING type which persists Enum.toString() instead of name(). Thanks jiajia-li.
    • CORE: Added support for BigInteger to be an ID and version field by saving as string. Thanks noordawod.
    • CORE: Added support for BYTE_ARRAY and STRING_BYTE_ARRAY data type for ids and default values. Thanks noordawod.
    • CORE: Added support for table aliasing. Thanks much to p91paul.
    • CORE: Added table-name for many ConnectionSource methods to allow partitioning and other per-table operations.
    • CORE: Added better support for per-database type object custom persisters. Thanks to rzorzorzo.
    • CORE: Fixed (really) QueryBuilder.orderByRaw(...), orderBy(...) mutually exclusivity. Thanks to Diederik. Bug #161.
    • CORE: Fixed a bug when we select columns on an entity without an id field. Thanks to lder.
    • CORE: Fixed a bug with building queries using selectRaw(...). Bug #166.
    • CORE: Fixed the javax.persistence annotation processing and revamped it to use the annotations directly.
    • CORE: Fixed bug with UpdateBuilder methods returning wrong type. Thanks to Joseph Jones. Bug #180.
    • CORE: Fixed bug with the raw results that they are not obeying the AS SQL. Thanks to nonameplum. Bug #183.
    • CORE: Fixed bug with ISNULL and ISNOTNULL which weren't working with serializable. Thanks to andrew8er. Bug #185.
    • CORE: Fixed bug with dao.update() not setting dao on BaseDaoEnabled instances. Thanks to Carlos Fonseca. Bug #177.
    • CORE: Fixed bug where dao.deleteById(...) was not being properly notified. Thanks to Daniel Jette. Bug #190.
    • CORE: Fixed bug where useGetSet did not understand isXxx() for boolean fields. Thanks to HeDYn. Bug #187.
    • CORE: Fixed finding of get/set/is methods if not in English locale. Thanks to Christian Ruppert. Bug #191.
    • CORE: Fixed bug with Doa.createOrUpdate(...) and custom id types. Thanks much to lstrzelecki. Bug #193.
    • CORE: Fixed some problems with default-value parsing and handing with some complex types.
    • CORE: Fixed synchronization problems with single connection ConnectionSource and Dao.callBatchTasks(). Bug #195.
    • CORE: Fixed bad bug where max-auto-refresh value enabled auto-refresh when programmatically configured. Bug #196.
    • CORE: Fixed bug where unknown enum name was not working with anonymous enum types. Thanks to jahd2602. Bug #197.
    • CORE: Fixed a bug where the logger did not handle an array of primitives correctly.
    • CORE: Fixed problem with capitalization of entities in non-english locales. ENGLISH now the default.
    • CORE: Fixed problems with using @DatabaseField(foreignColumnName). Thanks to Knight704.
    • CORE: Fixed problem with storing partially formed objects in cache because of select arguments. Thanks to pimduin.
    • CORE: Fixed a bug in DatabaseFieldConfig constructor where it was ignoring DataType param. Thanks to magicgoose.
    • CORE: Removed deprecated methods: Dao.setAutoCommit(boolean), isAutoCommit()
    • CORE: Removed deprecated methods: QueryBuilder.clear(), limit(int), offset(int), use long versions of methods
    • CORE: Removed deprecated methods: ForeignCollectionField.maxEagerForeignCollectionLevel(), foreignColumnName()
    • CORE: Removed deprecated methods: DatabaseFieldConfig.setMaxEagerForeignCollectionLevel()
    • CORE: Removed deprecated methods: DatabaseFieldConfig.setForeignCollectionMaxEagerForeignCollectionLevel()
    • CORE: Removed deprecated methods: DatabaseFieldConfig.setForeignCollectionOrderColumn()
    • CORE: Removed deprecated methods: DatabaseFieldConfig.setForeignCollectionForeignColumnName()
    • ANDROID: Added initial take on Loader base classes from EgorAnd for newer Android versions. Thanks much!!
    • ANDROID: Added better support for Slf4jLoggingLog from JDBC to CORE for Android users. Thanks to tonyxiao.
    • ANDROID: Fixed the string processing when persisting java.sql.Timestamp and java.sql.Date classes. Bug #163.
    • ANDROID: Fixed problem with the maxForeignAutoRefreshLevel config setting. Thanks to Eric Fung et al. Bug #194.
    • ANDROID: Fixed possible problem with queryForFirst() and improper LIMIT implementation.
    • ANDROID: Removed deprecated methods: OpenHelperManager.release(), AndroidDatabaseResults(Cursor, boolean, ObjectCache).
    Source code(tar.gz)
    Source code(zip)
Owner
Gray
Java hacker. C hacker in a previous life.
Gray
Extended SQLite functionality for Android

sqlite-provider A simplification of database access for Android. Description sqlite-provider implements a ContentProvider for you that allows database

Novoda 308 Nov 20, 2022
Extended SQLite functionality for Android

sqlite-provider A simplification of database access for Android. Description sqlite-provider implements a ContentProvider for you that allows database

Novoda 308 Nov 20, 2022
a 3d database ORM experiment. (used in two commercial projects)

Android-TriOrm a 3d database ORM experiment for Android. (used in two commercial projects). based around small tables concept and JVM Serialization. H

Tomer Shalev 19 Nov 24, 2021
Active record style SQLite persistence for Android

ActiveAndroid ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to s

Michael Pardo 4.7k Dec 29, 2022
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.

README DBFlow is fast, efficient, and feature-rich Kotlin database library built on SQLite for Android. DBFlow utilizes annotation processing to gener

Andrew Grosner 4.9k Dec 30, 2022
greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.

Check out ObjectBox Check out our new mobile database ObjectBox (GitHub repo). ObjectBox is a superfast object-oriented database with strong relation

Markus Junginger 12.6k Jan 3, 2023
Object-relational mapping for Android

RushOrm Object-relational mapping for Android RushOrm replaces the need for SQL by mapping java classes to SQL tables. What is the aim? The aim is to

Stuart Campbell 172 Nov 11, 2022
Insanely easy way to work with Android Database.

Sugar ORM Insanely easy way to work with Android databases. Official documentation can be found here - Check some examples below. The example applicat

null 2.6k Dec 16, 2022
Android ORM

Shillelagh Shillelagh is an sqlite library. It was built to make life easier. The entire library was built around simplicity when using sqlite in Andr

Andrew Reitz 49 Sep 11, 2020
Compile-time active record ORM for Android

Ollie Compile-time active record ORM for Android. Multiple mapping methods. SQLiteDatabase-like interface (QueryUtils.java). Lightweight query builder

Michael Pardo 423 Dec 30, 2022
requery - modern SQL based query & persistence for Java / Kotlin / Android

A light but powerful object mapping and SQL generator for Java/Kotlin/Android with RxJava and Java 8 support. Easily map to or create databases, perfo

requery 3.1k Dec 29, 2022
A blazing fast, powerful, and very simple ORM android database library that writes database code for you.

README DBFlow is fast, efficient, and feature-rich Kotlin database library built on SQLite for Android. DBFlow utilizes annotation processing to gener

Andrew Grosner 4.9k Dec 30, 2022
A simple NoSQL client for Android. Meant as a document store using key/value pairs and some rudimentary querying. Useful for avoiding the hassle of SQL code.

SimpleNoSQL A simple NoSQL client for Android. If you ever wanted to just save some data but didn't really want to worry about where it was going to b

Colin Miller 389 Sep 25, 2022
An Android library that makes developers use SQLite database extremely easy.

LitePal for Android 中文文档 LitePal is an open source Android library that allows developers to use SQLite database extremely easy. You can finish most o

Lin Guo 7.9k Dec 31, 2022
Active record style SQLite persistence for Android

ActiveAndroid ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to s

Michael Pardo 4.7k Dec 29, 2022
Insanely easy way to work with Android Database.

Sugar ORM Insanely easy way to work with Android databases. Official documentation can be found here - Check some examples below. The example applicat

null 2.6k Jan 9, 2023
An Android helper class to manage database creation and version management using an application's raw asset files

THIS PROJECT IS NO LONGER MAINTAINED Android SQLiteAssetHelper An Android helper class to manage database creation and version management using an app

Jeff Gilfelt 2.2k Dec 23, 2022
Android SQLite API based on SQLCipher

Download Source and Binaries The latest AAR binary package information can be here, the source can be found here. Compatibility SQLCipher for Android

SQLCipher 2.6k Dec 31, 2022
SquiDB is a SQLite database library for Android and iOS

Most ongoing development is currently taking place on the dev_4.0 branch. Click here to see the latest changes and try out the 4.0 beta. Introducing S

Yahoo 1.3k Dec 26, 2022