2

アプリケーションデータの既存のテーブルのアプリケーションのカテゴリを挿入したい。私がそれを正しく行っているかどうかはわかりませんが、私がしていることでもこのエラーが発生します。

どうすれば正しくできますか?

主な活動

    AlertDialog.Builder builder = new AlertDialog.Builder(
            MainActivity.this);
    builder.setTitle("Please Select Category of : " + AppName); 
    builder.setItems(shareItems,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int item) {
                    // TODO Auto-generated method stub
                    String itemz = String.valueOf(shareItems[item]);
                    mySQLiteAdapter.insertcategory(AppName, itemz);
                }
            });
    AlertDialog shareAlert = builder.create();
    shareAlert.show();

ハンドラ

 public long insertcategory(String AppName, String itemz) {
            // TODO Auto-generated method stub
            Cursor crack = sqlitedb.rawQuery("INSERT INTO " + KEY_CATEGORY
                    + " VALUES ( ' " + itemz + " ' ) WHERE " + KEY_NAME
                    + " LIKE ?", new String[] { "%" + AppName+ "%" });
            return 0;
        }

更新されたクエリ これは、テーブルを更新するために使用したものです。itemz は「ゲーム」として値を取得しますが、更新されません

public long insertcategory(String AppName, String itemz) {
        // TODO Auto-generated method stub

        ContentValues values = new ContentValues();
        values.put(KEY_CATEGORY, itemz);
        return sqlitedb.update(MYDATABASE_TABLE, values, KEY_NAME + " LIKE ?",
                new String[] { "%" + AppName + "%" });

    }

次のように作成されたテーブル

private static final String SCRIPT_CREATE_DATABASE = "create table "
            + MYDATABASE_TABLE + " (" + KEY_ID
            + " integer primary key autoincrement, " + KEY_NAME
            + " text not null, " + KEY_PACK + " text not null, " + KEY_PERM
            + " text not null, " + KEY_LEVEL + " text not null, "
            + KEY_CATEGORY + " text);";
4

3 に答える 3

7

INSERT コマンドには、まったく新しいレコードを挿入するため、WHERE 句はありません。

既存のレコードの値を設定/変更したいようです。これは、UPDATE コマンドで実行できます。

UPDATE MyTable SET category = 'Entertainment' WHERE name LIKE ?
于 2013-02-27T13:55:45.257 に答える
1

INSERT INTOthen useWHERE句は使用できません。

INSERT INTO は、テーブルに新しい行を追加することを意味しますが、これは以前には存在しませんでした。UPDATE および SELECT ステートメントでは WHERE を使用できますが、INSERT INTO では使用できません。

INSERT INTO ではなく UPDATE を意味していると思います。

これを試して:

public long insertcategory(String AppName, String itemz) {
            // TODO Auto-generated method stub
            Cursor crack = sqlitedb.rawQuery("UPDATE " + KEY_CATEGORY
                    + " SET yourFieldNameHere = ' " + itemz + " '  WHERE " + KEY_NAME
                    + " LIKE ?", new String[] { "%" + AppName+ "%" });
            return 0;
        }

挿入するには、これを試してください:

   public long insertcategory(String AppName, String itemz) {
                // TODO Auto-generated method stub
                Cursor crack = sqlitedb.rawQuery("INSERT INTO " + KEY_CATEGORY
                        + " VALUES(' " + itemz + " ')" });
                return 0;
            }

yourFieldNameHere をテーブルのフィールドの名前に変更します。

于 2013-02-27T13:56:00.217 に答える
0

INSERT INTO では WHERE を使用できません。INSERT を使用すると、新しい行が追加されます。KEY_NAME LIKE "%AppName% の行を更新する必要がある場合は、UPADATE を使用します。

于 2013-02-27T14:08:25.313 に答える