2016-03-30 12 views
1

isimli bir sütuna sahip değil. Ben, bir ORM (GreenDao) kullanarak kullanıyorum.Ama benim app çalıştırdığınızda, günlük kedi hiçbir Tareas adında bir tablo olmadığını gösteriyor. Bunu anlamadım çünkü veritabanımı oluşturduğumda, Tareas Tablosunda Tipo adında bir sütun var. 51:GreenDao- android.database.sqlite.SQLiteException: tablo TAREAS,

03-30 07 32,758 e/AndroidRuntime tipiwiny.greendao 29.389-29.389 /: önemli özel durum: Ana Süreci: tipiwiny.greendao PID: 29.389 android.database.sqlite.SQLiteException: Tablo TAREAS bir sahiptir sütun

TIPO adında

(kod 1): derleme yaparken,:? INSERT INTO TAREAS ('_ID', 'Duración', 'TIPO', 'Descripción', 'usuario', 'realizada') DEĞERLER (?,?,?,?,?) android.database.sqlite.SQLiteConnection.acquirePreparedStatement (SQLiteConnection.java:889 de android.database.sqlite.SQLiteConnection.nativePrepareStatement (Ana Yöntemi) at) 0.123.516 android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:588) en android.database.sqlite.SQLiteConnection.prepare (SQLiteConnection.java:500) android.database.sqlite.SQLiteProgram de de. (SQLiteProgram .Java: de 58) android.database.sqlite.SQLiteStatement de.greenrobot.dao de android.database.sqlite.SQLiteDatabase.compileStatement (SQLiteDatabase.java:994 de (SQLiteStatement.java:31) ) . .internal.TableStatements.getInsertStatement (TableStatements.java:48) de.greenrobot.dao.AbstractD adresinde tipwiny.greendao.CrearTarea.añadirTarea (CrearTarea.java:60) at tipwiny.greendao.CrearTarea.access $ 000 (CrearTarea.java:18) at typewiny.greendao.CrearTarea adresinde yer alan ao.insert (Abstracted.java:293) Android.view.View.View.performClick'te (View.java:4756) adresindeki android.view.View $ 'daki (CrearTarea.java:42) , $ 1.Click (http://support.gova:19749) android.os. Android.app.ActivityThread de android.os.Looper.loop (Looper.java:135) adresinden Handler.handleCallback (Handler.java:739) , android.os.Handler.dispatchMessage (Handler.java:95) . ana (ActivityThread.java:5221) Java.lang.reflect.Method.invoke adresindeki (Yerel Yöntem) java.lang.reflect.Method.invoke (Yöntem.java:372) atcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit. java: 899) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:694 at)

Benim veritabanı nasıl tanımlandığını: Lütfen oluşturmak için bu kodu çalıştırmak

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"); 


} 

tabloları, TareasDao sınıfı oluşturuldu ve createTable yöntemi:

/** 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 
} 

cevap

3

Uygulamayı kaldırıp yeniden yüklemeyi deneyin.

Detayları:

olası nedenlerinden biri, ilk tablo oluşturdu göç koştu ve ardından alanlar sonradan eklenen bu olabilir.

Yani iki olası çözümler olabilir: -

1: Telefonunuza (kaldırma) den Uygulamayı kaldırın ve onunla tüm tabloları kaldıracaktır. Ve yeniden yükleme, tüm tabloları yeniden oluşturacaktır. Tüm tabloları bırakmak ve bunları yeniden oluşturmak için DaoMaster uygulamanızda onUpdate yöntemini değiştirin.

/** 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); 
    } 
} 

Yardıma :)

+1

sayesinde ihtiyaç varsa bana bildirin! Sorunumu çözdüm. Uygulamayı telefonumdan kaldırdım ve Android Device Monitor'den veritabanını kaldırdıktan sonra. Son olarak, – tipiwiny

+0

veritabanını oluşturmak için geri döndüm Lütfen çözümünüzü paylaşın! Bunu nasıl yaptın? –

+0

Üzgünüm, sadece yorumumu düzenledim. – tipiwiny

İlgili konular