0

テーブルを更新しようとすると、アプリがクラッシュし、この致命的なエラーが返されます。

06-09 08:02:34.026: I/Database(342): sqlite returned: error code = 1, msg = no such column: username
06-09 08:02:34.034: E/Database(342): Error updating valore=1234 using UPDATE parametri SET valore=? WHERE _parametro=username
06-09 08:02:34.034: D/AndroidRuntime(342): Shutting down VM
06-09 08:02:34.034: W/dalvikvm(342): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-09 08:02:34.054: E/AndroidRuntime(342): FATAL EXCEPTION: main
06-09 08:02:34.054: E/AndroidRuntime(342): android.database.sqlite.SQLiteException: no such column: username: , while compiling: UPDATE parametri SET valore=? WHERE _parametro=username

挿入/更新の機能は次のとおりです。

    String strFilter = ParametriMetaData.PARAMETRO+"=" + parametro;
    ContentValues args = new ContentValues();
    args.put(ParametriMetaData.VALORE, valore);

    System.out.println( strFilter );

    mDb.update(ParametriMetaData.TAB_PARAMETRI, args, strFilter, null);

これはテーブルの定義です:

private static final String CREA_TAB_PARAMETRI = "CREATE TABLE IF NOT EXISTS "  //codice sql di creazione della tabella
                    + ParametriMetaData.TAB_PARAMETRI + " ("
                    + ParametriMetaData.PARAMETRO+ " text primary key, "
                    + ParametriMetaData.VALORE + " text not null);";

どうしたの?ありがとうございました!

4

2 に答える 2

0

更新クエリには適切なwhere句が必要です update(tablename, value, referenceField+"=?", value);

String strFilter = ParametriMetaData.PARAMETRO+"=?";
    ContentValues args = new ContentValues();
    args.put(ParametriMetaData.VALORE, valore);

    System.out.println( strFilter );

    mDb.update(ParametriMetaData.TAB_PARAMETRI, args, strFilter, parametro);
于 2012-06-09T06:14:16.003 に答える
0

(adbシェルを介して)sqlite3に移動し、問題のテーブルに「username」という名前の列があることを確認します。SQLCREATEステートメントは。で確認できますschema ?TABLE?。テーブルの構造に問題があると思います。

sqlite3コマンドにアクセスするadb shellには、ターミナル(unix)またはコマンドプロンプト(windows)で実行してから、を実行しますsqlite3sqlite3のドキュメントはここにあります。

于 2012-06-09T06:46:49.040 に答える