1

を使用して作成した既存のデータベースがありますがSQLiteOpenHelper、Sugar Orm に移行し、既存のデータベースに新しいテーブルを追加しようとしています。Sugar Ormページの設定ページ ( Sugar Orm Configuration ) に記載されているすべてのポイントに従っています。

ここに私の構成がどのように見えるか、

AndroidManifest.xml

<application
    android:name=".application"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <meta-data android:name="DATABASE" android:value="database.db" />
    <meta-data android:name="VERSION" android:value="5" />
    <meta-data android:name="QUERY_LOG" android:value="true" />
    <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example.in.smart" />

application.java (アプリケーション クラス)

public class application extends com.orm.SugarApp
 {
private static Context instance;
 public static Context get() {
    return application.instance;
}

モデルクラス

public class Now extends SugarRecord<Now> {
public String type = null;
public String name = null;
public String address = null;
public Date created;

public Now(){}

public Now(String type, String name,String address,Date created){
    super();
    this.type = type;
    this.name = name;
    this.address = address;
    this.created = created;
}

}

@Override public void onCreate()
{
    super.onCreate();
    instance = getApplicationContext();
    //ACRA.init(this);
}

}

データ処理の追加

   Now now = new Now(entry.getKey(), entry.getValue().get(i).name, entry.getValue().get(i).address, calendar.getTime());
  now.save(); // throws exception here

しかし、私はこの例外を受け取ります

E/SQLiteLog﹕ (1) no such table: NOW
 E/SQLiteDatabase﹕ Error inserting ADDRESS=abc TYPE=Now NAME=tyy CREATED=1430229379156
android.database.sqlite.SQLiteException: no such table: NOW (code 1): , while compiling: INSERT INTO NOW(ADDRESS,TYPE,NAME,CREATED) 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:1469)
        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341)
        at com.orm.SugarRecord.save(SugarRecord.java:126)
        at com.orm.SugarRecord.save(SugarRecord.java:45)

私にとっては、すべてを正しく行っているように見えるので、何か提案があります。ありがとう

4

4 に答える 4

5

同じことが私にも起こりました、そして解決策はマニフェストのデータベースバージョンだけでした:

から:

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

に:

<meta-data
            android:name="VERSION"
            android:value="3" />

よろしく。

于 2015-06-02T19:00:45.963 に答える
0

INSERT INTOステートメントは無効です:

INSERT INTO NOW(ADDRESS,TYPE,NAME,CREATED) VALUES (?,?,?,?,?)

4 ではなく 5 つの値を挿入しようとしています (5 つの疑問符に注意してください)。

SugarRecord必須のIDが含まれていると思います。

于 2015-04-28T14:21:38.473 に答える
0

インスタントランを無効にしてみてください。シュガーオームはインスタントランでは機能しません。

于 2016-05-03T16:46:05.203 に答える