2014-11-04 2 views
0

SQLiteAssetHelper를 사용하여 sqlite 데이터베이스를 만들었으므로 CRUD 작업을 올바르게 수행 할 수 있습니다. 그러나 어떤 행을 반환하려면 다음 Select 문을 가져올 수 없습니다.Android SQLite 비 기본 키 열로 선택

String query = "Select * from Student where serial=?"; 

Cursor c = rawQuery(query, String[]{serial.trim()}); 

serial 값은 처음에는 null이며 응용 프로그램에서 업데이트됩니다. 내 업데이트 검색어는 다음과 같습니다.

ContentValues cv = new ContentValues(); 
cv.put("serial", serial.trim()); 
cv.put("isactivated", 1); 

//This returns "1" meaning 1 row was affected 
mDb.update("Student", cv, "uid=?", new String[]{String.valueOf(student.getUid())}); 

데이터베이스의 일련 필드가 기본 키가 아닙니다. 이것이 작동하지 않는 이유입니까? 기본 키에 의해 SELECT 문이 잘 작동 :

String query = "Select * from Student where id=?"; 

Cursor c = rawQuery(query, String[]{String.valueOf(id)}); 
+0

이 0 행을 반환 완벽하게 일치하는 경우 필요하지 않습니다? urcat은 뭐라구? –

+1

비 기본 키를 사용하여 데이터베이스에서 데이터를 가져올 수도 있으며 업데이트 후 일련 번호를 확인할 수 있습니까? –

+0

메이트 (mate),'serial' 칼럼은 실제 값을 가지거나 null입니까? 업데이트가 실제로 어떤 작업을 수행합니까? select 쿼리는 괜찮은 것처럼 보입니다.'serial'은'null'이 아닌 값을 가지며, 그렇지 않으면 select 쿼리는 아무것도 반환하지 않습니다. – Leo

답변

1

알았으므로 알아 냈습니다. 바라기를 이것은 누군가에게 도움이 될 것입니다. 나는

db.beginTransactionNonExclusive(); 

//Database operations 

db.endTransaction(); 

내가 beginTransactionNonExclusive()에 대한 설명서를 읽고 있던 내 데이터베이스 트랜잭션을 포장되고, 모든 변경 사항은

db.setTransactionSuccessful() 

호출하기 전에 호출하지 않는 트랜잭션의 끝에서 롤백됩니다

db.endTransaction(); 

모두에게 도움을 주셔서 감사합니다.

0

봅니다 필요한 경우

Cursor c = db.query("Student",null,"serial"+"=?",new String[]{serial.trim()},null, null, null); 

db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy)

는 테이블 이름처럼 필요한 변화를 수행 이런 식으로 사용할 수 있습니다.

+0

빠른 응답을 주셔서 감사합니다. 나는 그것을 지금 시도 할 것이다 – eHero

+0

흠 아직도 작동하지 않습니다. – eHero

0

은 TEXT에서 직렬 열처럼 보입니다. 대신 절과 같은

사용 =

예를

db.query("Student",null,"serial like '%?%' ",new String[]{serial.trim()},null, null, null); 

%는

db.query("Student",null,"serial like '?' ",new String[]{serial.trim()},null, null, null);