Active record style SQLite persistence for Android

Overview

Build Status Stories in Ready

ActiveAndroid

ActiveAndroid is an active record style ORM (object relational mapper). What does that mean exactly? Well, ActiveAndroid allows you to save and retrieve SQLite database records without ever writing a single SQL statement. Each database record is wrapped neatly into a class with methods like save() and delete().

ActiveAndroid does so much more than this though. Accessing the database is a hassle, to say the least, in Android. ActiveAndroid takes care of all the setup and messy stuff, and all with just a few simple steps of configuration.

Download

Grab via Maven:

<dependency>
  <groupId>com.michaelpardo</groupId>
  <artifactId>activeandroid</artifactId>
  <version>3.1.0-SNAPSHOT</version>
</dependency>

or Gradle:

repositories {
    mavenCentral()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'

Documentation

License

Apache Version 2.0

Copyright (C) 2010 Michael Pardo

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contributing

Please fork this repository and contribute back using pull requests.

Any contributions, large or small, major features, bug fixes, unit tests are welcomed and appreciated but will be thoroughly reviewed and discussed.

You can run the test suite by following the instructions on the Running the Test Suite Wiki page.

Author

Michael Pardo | www.michaelpardo.com | www.activeandroid.com

Comments
  • NullPointerException in a select() query

    NullPointerException in a select() query

    Manifest

    <application
        <!-- other not important data -->
        android:name="com.myapp.App">
    
        <meta-data android:name="AA_DB_NAME" android:value="myapp.db" />
        <meta-data android:name="AA_DB_VERSION" android:value="1" />
    
        <activity android:name=".MainActivity" >
           <!-- other not important data -->
        </activity>
    </application>
    

    Foo class

    @Table(name = "Myclases")
    public class MyClass extends Model {
    
        @Column(name = "foo")
        public String foo;
    
        public static List<String> getAll(){
            return new Select()
                    .from(MyClass.class)
                    .execute();
        }
    }
    

    Method in MainActivity in a Fragment....

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        List<String> myList = MyClass.getAll();  //HERE IT FIRES THE ISSUE!
    }
    

    Error!

    java.lang.NullPointerException
    09-02 11:09:05.365: E/AndroidRuntime(30818):    at com.activeandroid.Cache.getTableName(Cache.java:152)
    09-02 11:09:05.365: E/AndroidRuntime(30818):    at com.activeandroid.query.From.toSql(From.java:146)
    09-02 11:09:05.365: E/AndroidRuntime(30818):    at com.activeandroid.query.From.execute(From.java:205)
    09-02 11:09:05.365: E/AndroidRuntime(30818):    at com.emanga.MainActivity$SectionFragment.onCreateView(MainActivity.java:151)
    
    opened by Vrael 45
  • UUID as Primary key possible?

    UUID as Primary key possible?

    For our company we are developing an Android app which will have a rather complex database setup. Looking for an ORM I ran into ActiveAndroid, which looks very promising.

    One thing ActiveAndroid seems to handle automagically though, is the creation of a unique id for every record. For our app we need to have UUIDs as primary key's. Can I override the automagic id and replace it with my unique UUID column?

    opened by kramer65 19
  • Can not use ActiveAndroid calling Model.save() always fail.

    Can not use ActiveAndroid calling Model.save() always fail.

    Hello I want to use ActiveAndroid in my project, as far as I can see and read, my setup is correct but after 3 days of searching it seems to be imposible make it to work, I expose my problem here in a desperate manner.

    What is the problem? Calling MyModel.save() always fail:

    07-13 21:49:45.155  16328-16328/cf.antares.finalssh E/SQLiteLog﹕ (1) no such table: connections
    07-13 21:49:45.165  16328-16328/cf.antares.finalssh E/SQLiteDatabase﹕ Error inserting port=22 hostname=some username=value Id=null password=secret
        android.database.sqlite.SQLiteException: no such table: connections (code 1): , while compiling: INSERT INTO connections(port,hostname,username,Id,password) VALUES (?,?,?,?,?)
                at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
                at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
                at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
                at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
                at com.activeandroid.Model.save(Model.java:153)
                .
                .
                .
    

    AndroidManifest.xml

    <manifest
        .... >
        <application
            ..... >
    
            <!-- ActiveAndroid -->
            <meta-data android:name="AA_DB_NAME" android:value="finalssh.db" />
            <meta-data android:name="AA_DB_VERSION" android:value="1" />
            <meta-data android:name="AA_MODELS" android:value="cf.antares.finalssh.models.Connection" />
    
          <!-- rest of the file goes on -->
    

    My model Connection.java:

    package cf.antares.finalssh.cf.antares.finalssh.models;
    
    import com.activeandroid.Model;
    import com.activeandroid.annotation.Column;
    import com.activeandroid.annotation.Table;
    import com.activeandroid.query.Select;
    
    import java.util.ArrayList;
    
    /**
     * Model class to represent connections saved to the database.
     */
    @Table(name = "connections")
    public class Connection extends Model {
        @Column(name = "hostname")
        public String hostname;
    
        @Column(name = "username")
        public String username;
    
        @Column(name = "password")
        public String password;
    
        @Column(name = "port")
        public int port;
    
        public Connection() {
            super();
        }
    
        public Connection(String hostname, String username, String password, int port) {
            super();
    
            this.hostname = hostname;
            this.username = username;
            this.password = password;
            this.port = port;
        }
    
        public static ArrayList<Connection> all() {
            return new Select().all().from(Connection.class).execute();
        }
    }
    

    My Activity MainActivity.java

    package cf.antares.finalssh;
    import com.activeandroid.ActiveAndroid;
    import cf.antares.finalssh.cf.antares.finalssh.models.Connection;
    
    public class MainActivity extends ActionBarActivity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ActiveAndroid.initialize(this);
            setContentView(R.layout.activity_main);
        }
    

    I have a button that fires a method to validate a form and save the connection model:

    // After validation
    Connection newConnection = new Connection(hostname, username, password, port);
    newConnection.save();  // Exception thrown "E/SQLiteLog﹕ (1) no such table: connections"
    

    I have read another similar problems, people recommends uninstalling the app and reinstalling, I have done that, clearing app data, even using adb shell to delete the created database, I've used my real device to test and also genymotion, changing the db name, the version and still the error is the same "no such table: connections".

    Or perhaps do I need to create the table my self? (the wiki does not says anything about that).

    I would appreciate any help. Thanks!

    opened by zzantares 15
  • Cannot create database model

    Cannot create database model

    On 4.4.2 I get the error:

                        `E  java.lang.RuntimeException: Unable to create application my.package.name: android.database.sqlite.SQLiteException: near ")": syntax error (code 1): , while compiling: CR
                           EATE TABLE IF NOT EXISTS Model ();
                        E   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4612)
                        E   at android.app.ActivityThread.access$1600(ActivityThread.java:169)
                        E   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1337)
                        E   at android.os.Handler.dispatchMessage(Handler.java:102)
                        E   at android.os.Looper.loop(Looper.java:136)
                        E   at android.app.ActivityThread.main(ActivityThread.java:5476)
                        E   at java.lang.reflect.Method.invokeNative(Native Method)
                        E   at java.lang.reflect.Method.invoke(Method.java:515)
                        E   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                        E   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                        E   at dalvik.system.NativeStart.main(Native Method)
                        E  Caused by: android.database.sqlite.SQLiteException: near ")": syntax error (code 1): , while compiling: CREATE TABLE IF NOT EXISTS Model ();
                        E   at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                        E   at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1113)
                        E   at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:690)
                        E   at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                        E   at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                        E   at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                        E   at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1806)
                        E   at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1737)
                        E   at com.activeandroid.DatabaseHelper.executeCreate(DatabaseHelper.java:146)
                        E   at com.activeandroid.DatabaseHelper.onCreate(DatabaseHelper.java:66)
                        E   at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
                        E   at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
                        E   at com.activeandroid.Cache.openDatabase(Cache.java:106)
                        E   at com.activeandroid.Cache.initialize(Cache.java:75)
                        E   at com.activeandroid.ActiveAndroid.initialize(ActiveAndroid.java:44)
                        E   at com.activeandroid.ActiveAndroid.initialize(ActiveAndroid.java:34)
                        E   at com.activeandroid.ActiveAndroid.initialize(ActiveAndroid.java:30)
                        E   at my.package.name.MyClass.onCreate(MyClass.java:30)
                        E   at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
                        E   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4609)
                        E   ... 10 more`
    
    opened by tomrozb 13
  • no such column: Id

    no such column: Id

    I downloaded the that latest from Master and built it. All seemed fine until I tried tried to query the databse. After querying the db, I recieve the following:

    android.database.sqlite.SQLiteException: no such column: Id: , while compiling: SELECT * FROM OpsPeriods WHERE Id=? LIMIT 1

    after exporting the DB I found that the the id column (Id) is not even in the table.

    The .jar that's available here works just fine: https://github.com/thecodepath/android_guides/wiki/ActiveAndroid-Guide

    Any thoughts?

    opened by kevinmlong 12
  • Pre-populated databases?

    Pre-populated databases?

    I see this link: http://github.com/pardom/ActiveAndroid/wiki/Pre-populated-databases

    and notice it says coming soon. Is this functionality built, but just not documented there yet? In: https://github.com/pardom/ActiveAndroid/blob/master/src/com/activeandroid/DatabaseHelper.java

    there is a method for copying a pre-populated database, I'm just not sure of the proper way to do it. Any pointers?

    opened by powerje 12
  • Parcelable in Model

    Parcelable in Model

    I want to implement Parcelable in your class. Can I call super.writeToParcel(out, flags);? My class looks like "class A extends Model implements Parcelable"

    opened by ibabuk 11
  • Unable to add column to table

    Unable to add column to table

    Hi Team,

    I have a table with below structure.

    @Table(name="books") public class Books extends Model { @Column(name = "bookId") public String bookId; }

    I want to Add a new column. I followed the steps mentioned in https://github.com/pardom/ActiveAndroid/wiki/Schema-migrations. But I am getting the below error:

    Caused by: android.database.sqlite.SQLiteException: not an error (code 0)

    This happens at My Application class where I am initializing active android.

    Please Help.

    Thanks.

    opened by HannanShaik 11
  • Migration for Table creation

    Migration for Table creation

    Hi, I have a problem where a new class is not generating the table it needs. What I want to do to fix it is to create a migration that creates the table. I have been reading Active Android's source trying to find the place you create the tables, but I haven't been able to find it.

    I am fine with the basic type columns, but I don't know how to create the columns that reference other objects, mainly because I don't know how the foreign keys are created in ActiveAndroid. What my migration has right now is

    create table if not exists Items (Id integer primary key autoincrement, WebId integer, 
      Name text, GuideQuantity integer, DispatchedQuantity integer, Dispatch integer,
      foreign key(Dispatch) references Dispatches(Id));
    

    The class represented by this is

    @Table(name = "Items")
    public class Item extends BeetrackModel {
    
        @Column(name = "WebId")
        public Long webId;
    
        @Column(name = "Name")
        public String name;
    
        @Column(name = "GuideQuantity")
        public Long guide_quantity;
    
        @Column(name = "DispatchedQuantity")
        public Long dispatched_quantity;
    
        @Column(name = "Dispatch")
        public Dispatch dispatch;
    }
    

    The Dispatch column has a foreign key to the Id column of the Dispatches table. How is ActiveAndroid generating those foreign keys so I can recreate it as close to how it should be?

    Thanks and best regards,

    opened by sergiocampama 9
  • Equals() should be type safe, null-aware and hashcode() should be overridden

    Equals() should be type safe, null-aware and hashcode() should be overridden

    When playing around with ActiveAndroid I found weird behavior of the Model.equals() method.

    • For two new blank models, equals would not consider them equal.
    • Equals would throw ClassCastException when compared to anything else than another model.
    • Equals against null throws NullPointerException

    After looking at the equals method, it does not check type or null/notnull of the other object. Also, once a model has null id (not yet saved), it is automatically not equal to anything, which I also see as a bug. There is also a missing hashcode override, so models cannot be used in e.g. hash sets.

    The proposed changes fix these problems - overridden hashcode, type safe and null-aware equals and null id does not automatically mean not equal to anything. I've also added a test for this behavior.

    opened by vsigler 9
  • Working with an existing db (coming from iOS)

    Working with an existing db (coming from iOS)

    I have a working iOS application storing data in a myapp.sqlite file. I would like to reuse this myapp.sqlite directly with the ActiveAndroid stack.

    • How to do that ?
    • Is it possible ?
    opened by fvisticot 9
  • Error duplicate column name: Id when migrate DB

    Error duplicate column name: Id when migrate DB

    I want add new table Products into current DB.

    I have performed the following steps: Step 1: Change files AndroidManifest.xml

    <meta-data
        android:name="AA_DB_VERSION"
        android:value="2" />
    

    Step 2: Create new file 2.sql in folder assets/migrations

    DROP TABLE IF EXISTS "Products";
    CREATE TABLE IF NOT EXISTS "Products" ("Id" INTEGER,"p_name" TEXT,"p_des" TEXT,"p_price" TEXT);
    

    Step 3: Create new file Products.java

    @Table(name = "Products")
    public class Products extends Model implements Serializable {
        @Column(name = "Id")
        public Integer Id;
        @Column(name = "p_name")
        public String p_name;
        @Column(name = "p_des")
        public String p_des;
        @Column(name = "p_price")
        public String p_price;
    
        public Products() {
            super();
        }
    
    }
    

    When I update the version app, I get the following error: SQLiteLog: (1) duplicate column name: Id in "CREATE TABLE IF NOT EXISTS Products (Id INTEGER PRIMARY KEY AUTOINCREMENT, Id INTEGER PRIMARY KEY AUTOINCREMENT, p_name TEXT, p_des TEXT, p_price TEXT);"

    opened by nguyenconghoan 0
  • NoClassDefFoundError: WearableActivityController$AmbientCallback;

    NoClassDefFoundError: WearableActivityController$AmbientCallback;

    Hello,

    I am completely new to Android development and wanted to use ActiveAndroid in my app. I tried to install it following the documentation, like this:

    `

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-feature android:name="android.hardware.type.watch" />
    
    <application
    
        ...
    
        android:name="com.activeandroid.app.Application"
        >
    
        <meta-data android:name="AA_DB_NAME" android:value="cardelli_db" />
        <meta-data android:name="AA_DB_VERSION" android:value="5" />
    
        ...
    
       
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.InventoryManagement.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

    `

    I also dragged the .jar to my libs folder and imported the library. Android Studio finds the annotations when I try to use them.

    However, when I start the app, I get a "NoClassDefFoundError". Please see below

    E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.inventorymanagement, PID: 26940 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/wearable/compat/WearableActivityController$AmbientCallback; at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:454) at com.activeandroid.ReflectionUtils.getParsers(ReflectionUtils.java:158) at com.activeandroid.Registry.initialize(Registry.java:100) at com.activeandroid.ActiveAndroid.initialize(ActiveAndroid.java:8) at com.activeandroid.app.Application.onCreate(Application.java:9) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6712) at android.app.ActivityThread.access$1300(ActivityThread.java:237) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.wearable.compat.WearableActivityController$AmbientCallback" on path: DexPathList[[zip file "/data/app/~~9pvbFFebYtBtO7MtdDhYbA==/com.example.inventorymanagement-I8glsXyrufwz-48YcKB0QQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~9pvbFFebYtBtO7MtdDhYbA==/com.example.inventorymanagement-I8glsXyrufwz-48YcKB0QQ==/lib/x86, /system/lib, /system_ext/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:454)  at com.activeandroid.ReflectionUtils.getParsers(ReflectionUtils.java:158)  at com.activeandroid.Registry.initialize(Registry.java:100)  at com.activeandroid.ActiveAndroid.initialize(ActiveAndroid.java:8)  at com.activeandroid.app.Application.onCreate(Application.java:9)  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6712)  at android.app.ActivityThread.access$1300(ActivityThread.java:237)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:223)  at android.app.ActivityThread.main(ActivityThread.java:7656)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)  I/Process: Sending signal. PID: 26940 SIG: 9

    It looked like a dependency is missing. "AndroidActivityController" is appearently part of AndroidWear. I tried adding the dependency stated there by adding "implementation "androidx.wear:wear:1.2.0-alpha03"" to my build.gradle, but no help.

    I searched on the web for this but could not find anything. Any help is much appreciated!

    Best regards.

    opened by Stardust077 0
  • App freezing when transaction it's open yet

    App freezing when transaction it's open yet

    When I open a transaction manually, and in another segment (Hendler, for example), I try to access the DB, without closing the transaction, the application freeze.

    In the versions prior to 9, api 28, this "problem" didn't happen.

    Closing the transaction is always recommended, but in this case there was an error.

    opened by emersonassis 0
  •  Failed to resolve: com.michaelpardo:activeandroid:3.1.0-SNAPSHOT

    Failed to resolve: com.michaelpardo:activeandroid:3.1.0-SNAPSHOT

    I'm not able to compile Failed to resolve: com.michaelpardo:activeandroid:3.1.0-SNAPSHOT no repo at this path https://oss.sonatype.org/content/repositories/snapshots/com/michaelpardo/ please let me know how to resolve this issue.

    opened by adixitflair 33
  • Failed to resolve: com.michaelpardo:activeandroid:3.1.0-SNAPSHOT

    Failed to resolve: com.michaelpardo:activeandroid:3.1.0-SNAPSHOT

    I'm not able to compile Failed to resolve: com.michaelpardo:activeandroid:3.1.0-SNAPSHOT

    no repo at this path https://oss.sonatype.org/content/repositories/snapshots/com/michaelpardo/

    please let me know how to solve this issue.

    opened by Suchiq 2
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
A Java/Kotlin library for Android platform, to manage bean's persistence in SQLite, SharedPreferences, JSON, XML, Properties, Yaml, CBOR.

Thanks to JetBrains for support Kripton Persistence Library project! Kripton Persistence Library Kripton is a java library, for Android platform, that

xcesco 117 Nov 11, 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
ORMDroid is a simple ORM persistence framework for your Android applications.

ORMDroid is a simple ORM persistence framework for your Android applications, providing an easy to use, almost-zero-config way to handle model persist

Ross Bamford 87 Nov 10, 2022
RecordMe - Record your voice application with kotlin

RecordMe A simple voice recording app. Made Using : Kotlin, Navigation Component

Steve Waweru 2 Apr 28, 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
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
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
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
lightweight and minimalist ORM for Java/Android. works with SQLite & MySQL. (not actively maintained)

Description ORMAN is an minimalistic and lightweight ORM framework for Java which can handle your common database usage without writing SQL and strugg

Ahmet Alp Balkan 246 Nov 20, 2022
Compile time processed, annotation driven, no reflection SQLite database layer for Android

SqliteMagic Simple yet powerful SQLite database layer for Android that makes database handling feel like magic. Overview: Simple, intuitive & typesafe

Siim Kinks 118 Dec 22, 2022
android 数据库框架,sqlite database

DBExecutor 主要的功能 1.使用了读写锁,支持多线程操作数据。 2.支持事务 3.支持ORM 4.缓存Sql,缓存表结构 这个类库主要用于android 数据库操作。 始终围绕着一个类对应一个表的概念。 只要创建一个实体类,就不用当心它怎么存储在数据库中,不用重新写增删改查的代码。基本的功

null 77 May 31, 2021
AndroidQuery is an Android ORM for SQLite and ContentProvider which focuses on easy of use and performances thanks to annotation processing and code generation

WARNING: now that Room is out, I no longer maintain that library. If you need a library to easy access to default android ContentProvider, I would may

Frédéric Julian 19 Dec 11, 2021
LiteOrm is a fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line of code efficiently.

#LiteOrm:Android高性能数据库框架 A fast, small, powerful ORM framework for Android. LiteOrm makes you do CRUD operarions on SQLite database with a sigle line

马天宇 1.5k Nov 19, 2022
lightweight and minimalist ORM for Java/Android. works with SQLite & MySQL. (not actively maintained)

Description ORMAN is an minimalistic and lightweight ORM framework for Java which can handle your common database usage without writing SQL and strugg

Ahmet Alp Balkan 246 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
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 Jan 4, 2023
Realm is a mobile database: a replacement for SQLite & ORMs

Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the Java version of Realm

Realm 11.4k Jan 2, 2023