2016-05-07 2 views
1

私はAndroidプロジェクトでSugar ORMに多くの問題があります。このようなテーブルはありません。砂糖ORM

エラーです:私は次のコードを実行しようとするときに問題が起こる

package net.elinformaticoenganchado.sergio.crossfighters; 

import com.orm.SugarRecord; 
import com.orm.dsl.Unique; 

/** 
* Created by sergio on 7/05/16. 
*/ 

public class Plan extends SugarRecord { 
    @Unique 
    String name; 


    // Default constructor is necessary for SugarRecord 
    public Plan() { 

    } 

    public Plan(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

05-07 18:50:42.173 7252-7252/net.elinformaticoenganchado.sergio.crossfighters E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: net.elinformaticoenganchado.sergio.crossfighters, PID: 7252 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{net.elinformaticoenganchado.sergio.crossfighters/net.elinformaticoenganchado.sergio.crossfighters.addPlan}: android.database.sqlite.SQLiteException: no such table: PLAN (code 1): , while compiling: INSERT OR REPLACE INTO PLAN(ID,NAME) VALUES (?,?) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: android.database.sqlite.SQLiteException: no such table: PLAN (code 1): , while compiling: INSERT OR REPLACE INTO PLAN(ID,NAME) VALUES (?,?) 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 
     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:1469) 
     at com.orm.SugarRecord.save(SugarRecord.java:280) 
     at com.orm.SugarRecord.save(SugarRecord.java:416) 
     at net.elinformaticoenganchado.sergio.crossfighters.addPlan.onCreate(addPlan.java:17) 
     at android.app.Activity.performCreate(Activity.java:6237) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
     at android.app.ActivityThread.-wrap11(ActivityThread.java)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

そして、私のエンティティクラスは、ということです

package net.elinformaticoenganchado.sergio.crossfighters; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

import java.util.List; 

public class addPlan extends AppCompatActivity implements View.OnClickListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_plan); 

     Plan plan = new Plan("Plan1"); 
     plan.save(); 

     List<Plan> plans = Plan.listAll(Plan.class); 

     for (int i = 0; i < plans.size(); i++) { 
      System.out.println("Plan: " + plans.get(i).getName()); 
     } 

    } 

    @Override 
    public void onClick(View v) { 

    } 
} 

してください私は助けを必要とする、私はオプションを無効にしたすべての記事のようにインスタント実行が言ったが、それdoesnt仕事。あなたの助けのための

Settings

感謝。

マイアンドロイドマニフェスト:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="net.elinformaticoenganchado.sergio.crossfighters" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <application 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" 
     android:name="com.orm.SugarApp"> 
     <meta-data android:name="DATABASE" android:value="example.db" /> 
     <meta-data android:name="VERSION" android:value="1" /> 
     <meta-data android:name="QUERY_LOG" android:value="true" /> 
     <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="net.elinformaticoenganchado.sergio.crossfighters" /> 

     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".chronometer" /> 
     <activity android:name=".addPlan" /> 
    </application> 

</manifest> 
+0

アプリケーションを正しく設定しましたか?のように、 'SugarApp'クラスを定義し、それをマニフェストに設定する必要がありますか? http://satyan.github.io/sugar/getting-started.html –

+0

@ cricket_007はい正しく設定しました。 – Sermanes

+0

このanwserを試してみてください......... http://stackoverflow.com/questions/35792152/sugar-orm-no-such-table-exeption –

答えて

3

この問題は、空の「新バージョンでの移行スクリプトファイル」を作成することによって解決することができます。 これは次のようにして簡単に実行できます。

  1. 新しいSugarレコードクラスを作成します。
  2. Androidマニフェストファイルでは、DBのバージョンを増やすだけです。

これを実行すると、古いテーブルを削除したり作成したりせずに新しいテーブルが作成されます。

私のバージョンでは、DBの変更を行う場合は、アプリを削除し、新鮮なアプリとしてインストールするか、DBのバージョンを変更し、ALTERクエリを記述する必要が1.5

+2

私は同じ問題がありました。バージョン1.4ではsugar-ormを使用していました。** Instant Run **を有効にして、** SQLiteException **を受け取りました。このオプションを無効にして** VERSION **マニフェストですべてがスムーズに実行されました – PiKos

+0

はい、私はそれを行いました!ありがとうございます@PiKos – Sermanes

0

です。

関連する問題