2011-11-29 8 views
1

특수 문자 (작은 따옴표)가있는 레코드가있는 조직 열이있는 데이터베이스가있는 응용 프로그램이 하나 있습니다. 텍스트 필드에서 특수 문자로 검색하는 동안 강제 닫기 오류가 발생합니다.android에서 특수 문자로 검색하는 방법

코드는 다음과 같습니다 :

String name = idValues.getStringExtra("ORGNAME"); 
    String sql ="select orgname from table1 where name like '%"+ name +"%' Order by org.name"; 

는 특수 문자를 포함하는 이름으로 검색 할에 SampleCode/링크와 함께 도와주세요.

미리 감사드립니다. 이런 식의 PreparedStatement를 사용

+0

PreparedStatement를 사용해보십시오. – Muse

+1

예 pls .... –

+0

테스트를 위해 입력 한 특수 문자는 무엇입니까? – Naved

답변

2
String name = idValues.getStringExtra("ORGNAME");  

if (name.contains("'")) { 
    // Should replace all the charecters 
    name = name.replaceAll("'", "''"); 
} 

String sql ="select orgname from table1 where name like '%"+ name +"%' Order by org.name"; 

표시된 것처럼 문자열에 작은 따옴표 (')를 입력하십시오. 이것을 시도하십시오.

+0

왼쪽으로 이스케이프 : if (name.contains ("\ '")) \t { \t \t name.replace ("\'", ""); \t} – Muse

+0

두 개의 작은 따옴표는 여기에 있습니다. name.replace (" '", "' '"); – Muse

+0

당신이 name = name.replace ("", "")와 같은 반환 된 참조를 수집하지 않았으므로 따옴표는 여전히 대체되지 않습니다 – Muse

1

시도 : 오류 점검이 완료되지 않았

PreparedStatement pstmt = null; 
String sql ="select orgname from table1 where name like ? Order by orgname"; 
pstmt.setString(1,"%"+name+"%"); 
ResultSet rs = pstmt.executeQuery(); 

.

+1

커서를 사용하여 문자열 sql을 아래와 같이 반환합니다.'cdata = myDbHelper.getView (sql);'그러면 커서에 전달할 준비가 된 명령문에서 문자열 값을 어떻게 얻을 수 있습니까? –

+0

코드를 붙여 넣을 수 있습니까? – Muse

+0

커서를 사용하는 특별한 이유가 있습니까? 그리고 왜 당신은 "org.name"에 의해 Order와 같이 씁니다. orgname이어야합니다. – Muse

관련 문제