2013-02-27 2 views
1

내가 응용 프로그램 데이터의 기존 테이블의 응용 프로그램의 카테고리를 삽입하려면. 나는 그것이 올바른 일을하는 경우 나도 몰라,하지만 내가 뭘하는지뿐만 아니라이 오류가 발생합니다.안드로이드 sqlite에 삽입 어디에

어떻게해야합니까?

Mainactivity

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는 '게임'과 같은 값을 얻을 수 있지만, 그것은 완전히 새로운 기록을 삽입하기 때문에 WHERE 절을하지 않는

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

SQL 쿼리에 오류가 있습니다. 생성 된 SQL 쿼리를 인쇄하여 SQLlite에서 직접 실행하십시오. 실제 소스 코드에서 실수를 발견하는 좋은 방법 – reporter

답변

4

삽입 명령으로 생성

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 + "%" }); 

    } 

표를 업데이트하기하지 않습니다.

기존 레코드의 값을 설정/변경하려는 것으로 보입니다. 이는 UPDATE 명령을 수행 할 것입니다 :

UPDATE MyTable SET category = 'Entertainment' WHERE name LIKE ? 
0

그런 다음 WHERE 절을 사용 INSERT INTO을 사용할 수 없습니다.

INSERT INTO는 테이블에 새 행을 추가한다는 것을 의미합니다. 이전에는 존재하지 않았습니다. WHERE on UPDATE 및 SELECT 문은 사용할 수 있지만 INSERT INTO에는 사용할 수 없습니다.

이 시도 :

내가 대신 INSERT INTO 업데이트 의미 같은데요 삽입에 대한

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을의 이름으로 테이블의 필드.

+0

안녕하세요, 고맙습니다. 지식에 대해서는 거짓말을하고 있습니다. – Romi

+0

하지만 데이터베이스에 데이터를 추가하지 않습니다. – Romi

+0

행이 아직 존재하지 않습니다. 어떤 UPDATE 문이 있으면 기존 레코드를 업데이트하는 것입니다. INSERT INTO에 대한 코드에 대한 업데이트 된 답변을 참조하십시오. 감사합니다. – lorraine

0

INSERT INTO에서 WHERE를 사용할 수 없습니다. INSERT를 사용하면 새 행이 추가됩니다. KEY_NAME과 같은 업데이트 행이 필요한 경우 "% AppName % use UPADATE

관련 문제