2013-10-04 2 views
0

안녕하세요. 안드로이드 앱을 개발하고 있습니다. 데이터베이스 테이블에 필드가 phnnofrmDb VARCHAR 인 NUMBERRECEIVED가 있습니다. 이 db 번호를 텍스트 뷰에서 사용자가 입력 한 전화 번호와 비교해야합니다.WHERE 및 LIKE가 작동하지 않는 SQL 쿼리

이 내가

while (c.moveToNext()) 
{ 

    //phone number entered in text view 
    **contactNumber** 

     db = openOrCreateDatabase("Test", 0, null); 
     Cursor cur = db.rawQuery("SELECT count(*) FROM NUMBERRECEIVED ", null); 
     if (cur.getCount() > 0) 
     { 
      Cursor cursor = db.rawQuery("SELECT phnnofrmDb FROM NUMBERRECEIVED WHERE phnnofrmDb Like '%contactNumber' ", null); 
      if (cursor != null && cursor.moveToFirst()) 
      { 
      phnnofrmDb = cursor.getString(cursor.getColumnIndex("phnnofrmDb ")); 

      if(phnnofrmDb.contains(r_address)) 
      { 
       Log.e("same","true"); 

      } 
      else if(!phnnofrmDb.contains(r_address)) 
      { 
       Log.e("same","false"); 
      } 
      }cursor.close(); 
     } cur.close(); 
     db.close(); 
}c.close(); 

을 시도하고 코드입니다하지만 로그는 항상 "true"를 말하는 것입니다. 쿼리에서 잘못 될 수 있습니다. 이 문제를 해결하기 위해 사용자가 + 9195 * * 또는 + 44 * * ** 81 * * ** 같은 단지 번호와 같은 번호를 입력 할 수있는 방법을 제안 해주십시오. + 및 국가 코드 (+91)를 제외하고 어떻게 비교합니까? 제안하십시오.

감사합니다.

답변

0

당신은 같은 식의 끝에 닫는 인용 부호가 필요합니다 : 당신이 쿼리에서 singlecot (')를 놓친 생각이 도움이 :)

+0

+1 빠른 답변. – jeet

+0

-1 질문에 대한 답변입니까? –

+0

무엇? 다른 사람들은 모두 같은 대답을 가지고 있었고 또 다른 문제가있을 수 있지만 분명히 쿼리에 문제가 있습니다 ... 왜 당신은 downvote합니까? 왜 다른 사람들을 여기에 downvote하지 않습니까? 아주 이상한 행동. –

0

"SELECT numberp FROM NUMBERRECEIVED WHERE phnnofrmDb Like '%contactNumber' " 

희망

Like '%contactNumber 
replace with 
Like '%contactNumber' 
+0

아니요. 작동하지 않습니다. 비교를 위해 전체 쿼리를 제안 할 수는 있습니다. – sanjana

1

PhoneNumberUtils은 전화 번호를 비교하고 형식을 지정하는 다양한 방법을 제공합니다.

귀하의 경우에는 toCallerIDMinMatchgetStrippedReversed 기능을 사용할 수 있습니다.

자세한 내용은 here 문서를 참조하십시오.


libphonenumber 라이브러리를 사용하십시오.

구글의 일반적인 자바, C++ 및 분석, 서식, 저장 및 국제 전화 번호를 검증하기위한 자바 스크립트 라이브러리입니다.

https://code.google.com/p/libphonenumber/

1

은 당신의 쿼리를 대체합니다

Cursor cursor = db.rawQuery("SELECT phnnofrmDb FROM NUMBERRECEIVED WHERE phnnofrmDb Like '%'||?", new String[]{contactNumber}); 

SQL 문에서 사용자가 제공 한 문자열을 하드 코딩하지 마십시오.

+0

'||' 검색어를 의미합니까? – Tarun

+0

'||'은 표준 SQL이고 [SQLite] (http://www.sqlite.org/lang_expr.html) 연결 연산자 –

+0

'%?'이 (가) 아닙니다. 및 '%'|| 같은? – Tarun