2013-07-06 5 views
3

내가 여기 업데이트 쿼리 SQLite는 - 안드로이드

int fav = 1; 
Cursor c = sqliteDB.rawQuery("UPDATE "+ MyConstants.TABLE_NAME + " SET "+MyConstants.TABLE_NAME+"."+MyConstants.ISFAV+ " = "+fav+ " WHERE " +MyConstants.TABLE_NAME+"."+MyConstants.WORD_NAME+ " = \""+word_name+"\"", null); 

는 예외, 여기에 쿼리가 .. 내 안드로이드 응용 프로그램에서 SQLite는의 간단한 업데이트 쿼리를 크랙 할 수 아니에요,

07-06 23:41:48.723: E/AndroidRuntime(1102): FATAL EXCEPTION: main 
07-06 23:41:48.723: E/AndroidRuntime(1102): android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: UPDATE words SET words.isfavor = 1 WHERE words.word = "hello" 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1013) 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:624) 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
07-06 23:41:48.723: E/AndroidRuntime(1102):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 

답변

5

.

UPDATE words SET isfavor = 1 WHERE word = "hello" 
:
int fav = 1; 
Cursor c = sqliteDB.rawQuery("UPDATE "+ MyConstants.TABLE_NAME + " SET "+ MyConstants.ISFAV + " = "+fav+ " WHERE " + MyConstants.WORD_NAME + " = \""+word_name+"\"", null); 

이 더 많은이 같이 보이는 결과 쿼리를 제공해야한다 : 그것은이 같은 더해야한다
2
  1. UPDATE 문에는 항상 단 하나의 테이블 만 있으므로 테이블 이름 앞에 접두어를 붙이면 의미가 없으므로 사용할 수 없습니다.
  2. SQL에서 문자열은 '으로 구분됩니다. "은 열 이름과 같은 식별자에 사용됩니다. 단어 word을 처리하려고하면 쿼리가 끊어집니다.
  3. 문자열 서식 문제를 방지하려면 매개 변수를 사용한다 : 당신은 부적절 테이블 이름을 계속 사용
sqliteDB.rawQuery("UPDATE ... WHERE word = ?", 
         new String[] { word_name });