2016-03-30 42 views
1

我想插入一个数据在我的表Tareas。我使用ORM(GreenDao)。但是当运行我的应用程序时,log cat显示不存在名为Tareas的表。我不明白这一点,因为当我创建我的数据库时,Tareas Table有一个名为Tipo的列。GreenDao- android.database.sqlite.SQLiteException:表TAREAS没有列名为

七月3日至30日:51:32.758 29389-29389/tipiwiny.greendao E/AndroidRuntime:致命异常:主要过程:tipiwiny.greendao,PID:29389 android.database.sqlite.SQLiteException:表TAREAS没有柱

命名TIPO(码1):在编译:INSERT INTO TAREAS ( '_id', 'DURACION', 'TIPO', 'DESCRIPCION', 'USUARIO', 'REALIZADA')VALUES (, (方法) android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 在 android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 在 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 在android.database.sqlite.SQLiteProgram。(SQLiteProgram的.java:58) 在 android.database.sqlite.SQLiteStatement(SQLiteStatement.java:31) 在 android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:994) 在 de.greenrobot.dao。 .internal.TableStatements.getInsertStatement(TableStatements.java:48) at de.greenrobot.dao.AbstractD ao.insert(AbstractDao.java:293) 在tipiwiny.greendao.CrearTarea.añadirTarea(CrearTarea.java:60) 在tipiwiny.greendao.CrearTarea.access $ 000(CrearTarea.java:18) 在tipiwiny.greendao.CrearTarea $ 1.onClick(CrearTarea.java:42) at android.view.View.performClick(View.java:4756) at android.view.View $ PerformClick.run(View.java:19749) at android.os。 Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread。主(ActivityThread.java:5221) (方法) at(java.lang.reflect.Method.invoke(Native Method) Java的:899) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

我的数据库定义如何:

private static void createDatabase(Schema schema) { 
    Entity usuario = schema.addEntity("Usuario"); 
    usuario.addIdProperty(); 
    usuario.addStringProperty("nombre").notNull(); 
    usuario.addStringProperty("apellidos").notNull(); 
    usuario.addStringProperty("password").notNull(); 
    usuario.addStringProperty("roll").notNull(); 

    Entity habilidad = schema.addEntity("Habilidad"); 
    habilidad.addIdProperty(); 
    Property usuarioIdProperty = habilidad.addLongProperty("usuarioId").notNull().getProperty(); 
    habilidad.addToOne(usuario, usuarioIdProperty); 
    habilidad.addIntProperty("tipo").notNull(); 

    Entity tarea=schema.addEntity("Tareas"); 
    tarea.addIdProperty(); 

    tarea.addIntProperty("duracion").notNull(); 
    tarea.addIntProperty("tipo").notNull(); 
    tarea.addStringProperty("descripcion").notNull(); 
    tarea.addStringProperty("usuario"); 
    tarea.addBooleanProperty("realizada"); 


} 

当你执行这个代码生成表,类TareasDao被创建,方法createTable是:

/** Creates the underlying database table. */ 
public static void createTable(SQLiteDatabase db, boolean ifNotExists) { 
    String constraint = ifNotExists? "IF NOT EXISTS ": ""; 
    db.execSQL("CREATE TABLE " + constraint + "'TAREAS' (" + // 
      "'_id' INTEGER PRIMARY KEY ," + // 0: id 
      "'DURACION' INTEGER NOT NULL ," + // 1: duracion 
      "'TIPO' INTEGER NOT NULL ," + // 2: tipo 
      "'DESCRIPCION' TEXT NOT NULL ," + // 3: descripcion 
      "'USUARIO' TEXT," + // 4: usuario 
      "'REALIZADA' INTEGER);"); // 5: realizada 
} 

回答

3

尝试卸载并重新安装应用程序。

详情:

一个可能的原因可能是您创建的表第一,跑迁移,然后领域以后添加。

所以有可能是两种可能的解决方案: -

1:从您的手机(卸载)删除应用程序,它会删除所有的表吧。然后重新安装将重新创建所有表。

2:在DaoMaster中更改您的onUpdate方法以删除所有表并重新创建它们。

/** WARNING: Drops all table on Upgrade! Use only during development. */ 
public static class DevOpenHelper extends OpenHelper { 
    public DevOpenHelper(Context context, String name, CursorFactory factory) { 
     super(context, name, factory); 
     Log.i("greenDAO", "DevOpenHelper: constructor called"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); 
     //Remember to remove this line before moving to production. 
     dropAllTables(db,true); 
     onCreate(db); 
    } 
} 

让我知道如果您需要任何帮助:)

+1

谢谢!我解决了我的问题。我从手机中删除了应用程序,然后从Android设备监视器中删除数据库。最后,我返回生成数据库 – tipiwiny

+0

请分享你的解决方案!你是怎么做到的? –

+0

对不起,我刚刚编辑了我的评论。 – tipiwiny

相关问题