2013-05-29 2 views
6

이 쿼리를 실행할 때 'android.database.sqlite.SQLiteException : no such column'오류가 무엇입니까?android.database.sqlite.SQLiteException : 해당 열 없음

public Cursor Getupdate(String rid) throws SQLException 
     { 

Cursor m1Cursor = db.rawQuery("SELECT _id FROM Meeting where meet="+rid , null); 
    if (m1Cursor != null) {   
     if(m1Cursor.getCount() > 0) 
     { 

      m1Cursor.moveToFirst(); 
     } 
    } 
return m1Cursor; 
} 

로그 캣

당신이 어디 절 검사에서 아포스트로피 (')를 사용할 필요가
05-28 01:22:27.999: E/AndroidRuntime(1411): FATAL EXCEPTION: main 
05-28 01:22:27.999: E/AndroidRuntime(1411): android.database.sqlite.SQLiteException: no such column: ttyuhomk: , while compiling: SELECT _id FROM Meeting where meet=rage 

답변

24

는 항상 "제거 이후 당신이 오류 문자열입니다 '"+ + 제거 "'이 같은 따옴표를 사용합니다.

당신은 + 제거 할 경우에만를 INT입니다 제거 를 사용해야합니다.

+0

당신은 나를 구 했어요! thnxx 여보! –

16

.. 같은

db.rawQuery("SELECT _id FROM Meeting where meet='"+rid+"'" , null); 
+0

아를 나는 보여 주었다. 이제 rid가 int 데이터 유형이면 무엇입니까? 나는 "SELECT _id FROM Meeting where ="+라고 쓰고 싶습니다. – user3833732

4

또는 더 나은 아직, 해, PreparedStatement를 사용하고 결합하여 변수. 문자열과 날짜를 올바르게 이스케이프 처리합니다. 또한 SQL 주입 문제를 해결하는 데 도움이됩니다.

아직도이 사실을 모르는 사람들이 있습니까? 문자열 데이터 유형에 대해

5

당신은 또한 다음과 같이 사용할 수 있습니다.

db.rawQuery("SELECT _id FROM Meeting where meet=?" , 
      new String [] {rid}); 

이를 또한 SQL 주입 문제에 대한 해결됩니다.

+1

'?'args가 좋다.'String.valueOf (String)'의 오버로드가 없다. – laalto

+1

오! 죄송합니다. 사실, 그것은이 db.rawQuery ("SELECT _id FROM Meeting where meet =?", new String [] {rid})와 같은 것으로 보입니다. 내 코드를 지적 해 주셔서 감사합니다. –

+0

좋은 답변입니다. 그냥 SQL 주입 문제를 해결하는 데 도움이되는 방법에 대한 설명이 필요합니다. – VVB

관련 문제