2014-11-17 4 views
0

My SQL은 세 개의 열이 포함 된 레코드 하나만 반환해야합니다. Funcioando 제대로 내 문제를 더 잘 이해할 수있는 코드를 디버깅 이후입니다. ClienteVO 클래스로 이동하려면 각 열의 값을 가져와야합니다. 그러나 그는 세 개의 열을 가져 오지만 두 번째 열에서 첫 번째 선택은 오류 Can1t read row # 0, col # -1 from CursorWindow 디버깅을 확인하고 열 이름이 정확하고 레코드가 반환됩니다.sqlite 레코드의 각 열에서 값을 가져 오는 방법은 무엇입니까?

SQLiteDatabase db = new DB(ctx).getReadableDatabase(); 

String sql = String.format("select limite,valor,nome from limite " + 
      " INNER JOIN cliente ON cliente.id = limite.cliente_id " + 
      "where cliente.id=1"); 

Cursor rs = db.rawQuery(sql, null); 
ClienteVO vo = null; 

if (rs != null){ 
    vo = new ClienteVO(); 
    rs.moveToFirst(); 

    vo.setLimite(rs.getFloat(rs.getColumnIndex("limite"))); 
    vo.setValor(rs.getFloat(rs.getColumnIndex("valor"))); 
    vo.setNome(rs.getString(rs.getColumnIndex("nome"))); 
} 

다음 열에 대한 반복 연구에 대해 읽어보십시오. 그리고 그는 정상적으로 3 개의 기둥을 횡단합니다. 이 값을 얻는 유일한 방법인지 속성을 얻는 가장 좋은 방법인지 궁금합니다.

Cursor rs = db.rawQuery(sql, null);   
ClienteVO vo = null; 

if (rs != null){ 
    vo = new ClienteVO(); 
    rs.moveToFirst(); 

    for (Integer i=0; i <= rs.getColumnNames().length; i++){ 
     //How can I get the values of clean way 
    } 
} 
+0

"sql"변수를 공유 할 수 있습니까? –

+0

죄송합니다. 이해가 잘되어 있어야합니다. 질문을 편집 한 적이 있습니까? – csf

+0

그 변수는'sql'이라고하지 않습니다. 이 코드가 사용중인 코드입니까? –

답변

0
Cursor rs = db.rawQuery(sql, null); 

    ClienteVO vo = null; 

    vo = new ClienteVO(); 
    if (rs.moveToFirst()) { 
      vo.setLimite(rs.getFloat(0)); 
      vo.setValor(rs.getFloat(1)); 
      vo.setNome(rs.getString(2)); 
    } 

당신이 쓸 수 있습니다.

Cursor rs = db.rawQuery(sql, null); 

위의 경우 SQL 변수가 있습니다. 무엇이 포함되어 있습니까?

좋아, 당신은 당신의 커서가 하나 개 이상의 행이 있는지 확인하는

if (rs.moveToFirst()) {//} 

다음 사용해야합니다.

+0

이미 시도했지만 열 설명 사이에서 실행되지 않습니다. – csf

관련 문제