implement android android-studio greendao

implement - GreenDao Android Studio



object db android (6)

Aquí hay una descripción paso a paso para la integración de GreenDao en su proyecto de Android .

[Referencia ¿Cómo usar GeenDao con Android? ]

[Enlace del proyecto: Ejemplo de GreenDao ]

PARTE 1: Configuración de GREENDAO

  1. Crea un proyecto de Android.

  2. Haga clic en Archivo> Nuevo> Nuevo módulo . Seleccione la Biblioteca de Java y haga clic en Siguiente.

  1. Ahora tenemos que agregar las siguientes Dependencias de Gradle.

En build.gradle of Module: aplicación , insertar

compile ''de.greenrobot:greendao:2.1.0''

En el build.gradle de Module: greendao-generator , insert

compile ''de.greenrobot:greendao-generator:2.1.0''

Asegúrate de sincronizar tu proyecto.

  1. Ahora en MainGenerator.java ,

definiremos la estructura de la base de datos.

import de.greenrobot.daogenerator.DaoGenerator; import de.greenrobot.daogenerator.Entity; import de.greenrobot.daogenerator.Schema; public class MainGenerator { public static void main(String[] args) throws Exception { //place where db folder will be created inside the project folder Schema schema = new Schema(1,"com.codekrypt.greendao.db"); //Entity i.e. Class to be stored in the database // ie table LOG Entity word_entity= schema.addEntity("LOG"); word_entity.addIdProperty(); //It is the primary key for uniquely identifying a row word_entity.addStringProperty("text").notNull(); //Not null is SQL constrain // ./app/src/main/java/ ---- com/codekrypt/greendao/db is the full path new DaoGenerator().generateAll(schema, "./app/src/main/java"); } }

  1. Ejecute MainGenerator.java

  1. Después de ejecutar esto, observará una carpeta recién creada, es decir, db en la carpeta principal del proyecto.

PART2: Integrarlo con el Proyecto Android

  1. Establezca el diseño activity_main.xml .

    <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textData" android:layout_alignParentTop="true" android:layout_alignParentStart="true" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Save" android:id="@+id/textSave" android:layout_below="@+id/textData" android:layout_alignEnd="@+id/textData" android:layout_marginTop="22dp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Show Top" android:id="@+id/textTop" android:layout_below="@+id/textSave" android:layout_alignParentStart="true" android:layout_marginTop="35dp" />

  2. En MainActivity.java ,

Agregue los siguientes códigos

package com.codekrypt.greendao; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.codekrypt.greendao.db.DaoMaster; import com.codekrypt.greendao.db.DaoSession; import com.codekrypt.greendao.db.LOG; import com.codekrypt.greendao.db.LOGDao; import java.util.List; public class MainActivity extends AppCompatActivity { //Dao --> Data Access Object private LOGDao log_dao; // Sql access object private LOG temp_log_object; // Used for creating a LOG Object String log_text=""; //Entered text data is save in this variable private final String DB_NAME ="logs-db" ; //Name of Db file in the Device @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Initialise DAO log_dao=setupDb(); //Setting up form elements Button textSave= (Button) findViewById(R.id.textSave); Button textTop= (Button) findViewById(R.id.textTop); final TextView textData=(TextView) findViewById(R.id.textData); assert textSave != null; textSave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { log_text=textData.getText().toString(); temp_log_object=new LOG(null,log_text);// Class Object, Id is auto increment SaveToSQL(temp_log_object); } }); assert textTop != null; textTop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textData.setText( getFromSQL() ); } }); } //---------------------------------SQL QUERY Functions-----------------------------------------// public String getFromSQL(){ List<LOG> log_list = log_dao.queryBuilder().orderDesc(LOGDao.Properties.Id).build().list(); //Get the list of all LOGS in Database in descending order if(log_list.size()>0) { //if list is not null return log_list.get(0).getText(); //get(0)--> 1st object // getText() is the function in LOG class } return ""; } public void SaveToSQL(LOG log_object) { log_dao.insert(log_object); } //----------------------------***END SQL QUERY***---------------------------------------------// //-------------------------------DB Setup Functions---------------------------------------------// //Return the Configured LogDao Object public LOGDao setupDb(){ DaoMaster.DevOpenHelper masterHelper = new DaoMaster.DevOpenHelper(this, DB_NAME, null); //create database db file if not exist SQLiteDatabase db = masterHelper.getWritableDatabase(); //get the created database db file DaoMaster master = new DaoMaster(db);//create masterDao DaoSession masterSession=master.newSession(); //Creates Session session return masterSession.getLOGDao(); } //-------------------------***END DB setup Functions***---------------------------------------// }

  1. Antes de ejecutar la aplicación, asegúrese de haber cambiado su configuración.

  2. Ahora ejecútalo.

PARTE 3 - VER EL DB SQL

  1. Abra el símbolo del sistema.
  2. Ingrese los siguientes comandos.

  3. Apertura del archivo db en SQLite3

  4. Usando SQLite3

PARTE 4 - EXTRAS

  1. Estructura (clases principales) de GREENDAO

Estoy buscando una explicación clara paso a paso sobre cómo importar GreenDao en Android Studio.

Lo he usado antes en AS, pero no conseguí que funcionara de nuevo. Hay algunos tutoriales disponibles, pero no parecen aplicarse a la última versión de AS.

Cuando clono de github, obtengo un ejemplo de proyecto, etc. ¿Hay alguna manera de instalar GreenDaoGenerator sin estos extras?

Solo estoy buscando una explicación actualizada paso a paso.

Actualización: ¡sugiero usar Realm.io ahora! ¡Echale un vistazo! :-)

¡Cualquier ayuda sería apreciada!


Básicamente, lo que necesita es agregar un módulo de biblioteca Java ( Archivo> Nuevo> Nuevo módulo ... ) a su proyecto Android (suponiendo que esté usando Android Studio ), e inserte el código de generación dentro public static void main(String[] args) {} en la clase .java este módulo. Luego ejecútelo y el código se generará en el módulo de su aplicación principal.

Vea esta publicación en el blog para obtener un tutorial paso a paso con una explicación.


Funciona en Android 1.3 Preview

Para la respuesta principal (Probado en Android Studio 1.0), es posible que deba incluir esa carpeta fuente en su proyecto. Ir a la aplicación / build.gradle

agregue el siguiente bloque interno de Android

sourceSets {

main{ java{ srcDir ''src-gen'' } }



Probado en Android Studio 2.0

Con Android Studio 0.6.1+ (y posiblemente antes) puede agregar fácilmente proyectos no Android a su proyecto de Android como un módulo.

Utilizando el siguiente método, puede tener módulos Java ( greenDaoGenerator ) y módulos de Android en el mismo proyecto y también tiene la capacidad de compilar y ejecutar módulos Java como proyectos independientes de Java.

  1. Abra su proyecto Android en Android Studio. Si no tienes uno, crea uno.
  2. Haga clic en Archivo> Nuevo módulo . Seleccione la Biblioteca de Java y haga clic en Siguiente.
  3. Complete el nombre del paquete , etc. y haga clic en Finalizar. Ahora debería ver un módulo Java dentro de su proyecto Android.
  4. Abra el archivo build.gradle del proyecto java y agregue la siguiente dependencia

    dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile(''de.greenrobot:DaoGenerator:1.3.0'') }

  5. Copie sus clases de DaoGenerator o cree si no tiene una en su módulo java. Por ejemplo, he creado la clase ExampleDaoGenerator en mi módulo java.

    public class ExampleDaoGenerator { public static void main(String[] args) throws Exception { Schema schema = new Schema(1000, "de.greenrobot.daoexample"); addNote(schema); new DaoGenerator().generateAll(schema, "../DaoExample/src-gen"); } private static void addNote(Schema schema) { Entity note = schema.addEntity("Note"); note.addIdProperty(); note.addStringProperty("text").notNull(); note.addStringProperty("comment"); note.addDateProperty("date"); } }

Ahora, para generar las clases que puede usar en el proyecto de Android, siga los pasos a continuación.

  1. Haga clic en el menú de ejecución en la barra superior . Haga clic en Editar configuraciones ...
  2. En la nueva ventana, haga clic en el signo más en la parte superior izquierda de la ventana y seleccione Aplicación
  3. Debe aparecer una nueva configuración de aplicación, complete la siguiente información.

    1. Ponle un nombre, por ejemplo, greenDao.
    2. En la clase principal, haga clic en el botón ... y seleccione su clase de generador que tenga el método principal. Por ejemplo, en este caso, es com.greendao.generator.ExampleDaoGenerator
    3. En el directorio de trabajo seleccione la ruta de su proyecto java.
    4. En la clase de uso del módulo seleccione su proyecto java. haga clic en Aceptar.
    5. Vuelve al menú de ejecución y ahora puedes ver, por ejemplo, ejecutar greendao. haga clic en él. Debe compilarse con éxito.

Está hecho !!! puede verificar sus clases generadas en la carpeta que ha especificado. Por ejemplo, en este caso es /DaoExample/src-gen

NOTA: puede volver a ejecutar su proyecto de Android haciendo clic en el menú Ejecutar -> Editar configuración . selecciona tu proyecto y haz clic en Aceptar.


Solución: IO-Exception

  1. Ve a la construcción desde tu generador dao.
  2. agregar: aplicar ''aplicación''
  3. agregar: mainClassName = "you.package.include.Main"
  4. Ejecute "ejecutar" en la tarea de la aplicación (tarea gradle)

No sé por qué no funciona cuando crea manualmente una configuración de ejecución.