2011-12-28 3 views
0

내 응용 프로그램에서 내 SQLite 데이터베이스에 약간 문제가있어. 내 목표는 데이터베이스에 행이 없으면 삽입하고, 그렇지 않으면 행을 업데이트하는 것입니다.안드로이드 SQL 쿼리가 아닌 기존 행

주어진 조건의 행이 있는지 어떻게 확인할 수 있습니까?

나는 시도 : 커서가 null의 경우,

Cursor cursor = dbAdapter.query(dbName, null, "xcoord="+xcoord+" AND ycoord="+ycoord+" AND mac='"+mac+"'"+" AND ssid='"+ssid+"'", null, null, null, null); 
cursor.isNull(cursor.getColumnIndex("ssid")); 

및 확인?

치명적인 예외 : 주요

android.database.CursorIndexOutOfBoundsException : 인덱스 -1 요청, android.database.AbstractCursor.checkPosition에서 0

의 크기 (하지만, 그래서 나는이 SQLException있어 AbstractCursor.java:580)

도움 주셔서 감사합니다.

+0

예외가 무엇입니까? –

답변

1

어쨌든 나는 항상 if (cursor != null && cursor.moveToFirst())

할 경우 중 하나는 테이블이없는, 또는 당신은 기록이 없습니다.

0

검색어에서 단어 EXISTS을 제거하십시오. 행을 되 찾으면 거기에있는 것을 알 수 있습니다.

EXISTS 절은 하위 집합 또는 조인과 같은 피연산자로 행 집합을 가져 와서 해당 항목의 존재 여부에 따라 참 또는 거짓으로 평가합니다.

아마도이 문제를 해결하는 가장 좋은 방법은 아니지만 보통은 INSERT으로 시도하고 예외가 발생하면 UPDATE을 수행합니다. 즉 false로 평가되는 경우에 커서 작업하기 전에

+0

죄송합니다. 실수였습니다. 거짓 코드를 복사했습니다. – LikeMusic