2013-07-20 3 views
2

관련 스레드를 여러 번 통과했지만 아직 성공하지 못했습니다.SQLite에서 한도가있는 임의의 행 선택

어디서 잘못 될지 모르겠다. 행을 가져 오는 다음과 같은 방법이있다.

public Cursor getallrows (String fid , String sid , String bid , String pid , String limit) 
    { 
     return db.query(DATABASE_ALLPENLIST, new String[] {"rowpos","Peninnerid","issampled","onesymbol","twosymbol","threesymbol","foursymbol","fivesymbol","buildingid","farmid","sampleid","penid"}, "farmid = "+fid+" and sampleid = "+sid+" and buildingid = "+bid+" and penid = "+pid , null, null, null,"RANDOM()",limit); 
    } 

그러나 상기 방법은 저, 그것이 한계 변수에 언급 된 제 n 행을 반환되는 제한뿐만 아니라 임의의 순서로 한 행의 정확한 수를 반환한다.

대소 문자를 구분 하시겠습니까? 그러나 나는 또한 7 번째 매개 변수 자리에 Random()"RANDOM() LIMIT "+limit으로 시도했습니다.

미리 감사드립니다. limit 변수가 문자열 유형 인 경우

+1

어떤 유형의 객체가'limit' (int, string 등)입니까? – ObieMD5

+0

그것은 String입니다. 코드의 메서드에 매개 변수로 전달했습니다. 참조하십시오. – VIGNESH

+0

'1'이라는 명시적인 문자열로 내 대답이 효과가 없었습니까? – ObieMD5

답변

1

이 쿼리 기반으로 반환 임의 행이 작동합니다 또는 당신이 이런 식으로 명시 될 수 있습니다

db.query(DATABASE_ALLPENLIST, 
     new String[] {"rowpos","Peninnerid","issampled","onesymbol","twosymbol","threesymbol","foursymbol","fivesymbol","buildingid","farmid","sampleid","penid"}, 
     "farmid = "+fid+" and sampleid = "+sid+" and buildingid = "+bid+" and penid = "+pid , 
     null, 
     null, 
     null, 
     "RANDOM()", 
     "1"); 

또는 원시 쿼리 시도 :

db.rawQuery("Select rowpos, Peninnerid , issampled, onesymbol, twosymbol, threesymbol, foursymbol, fivesymbol, buildingid, farmid, sampleid, penid From " + DATABASE_ALLPENLIST + " Order By RANDOM() LIMIT ?", new String[] {limit}); 

이 API에 대한 기여도 : Link

+0

하지만 제한을 동적으로 전달하고 싶습니다. 한계를 찾기 위해 계산이 필요합니다. 그래서 나는 "1"로 줄 수 없었다. 제발 조언. – VIGNESH

+0

나는 그것이 바보 같은 질문 인 것을 안다. 그러나 나는 물어야한다, 당신은 당신의 테이블에서 2 이상의 열을 가지고 있냐? – ObieMD5

+0

@VIGNESH 내가 게시 한 rawQuery를 사용해도 똑같은 일을 할 수 있습니까? – ObieMD5