2011-11-29 54 views
1

中的特殊字符进行搜索我有一个应用程序使用具有特殊字符(单引号)记录的组织列的数据库。使用文本字段中的特殊字符进行搜索时,出现强制关闭错误。如何使用android

的代码如下:

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

请帮我samplecode /链接含有特殊字符的名称进行搜索。

在此先感谢。

+0

尝试使用PreparedStatement。 – Muse

+1

example 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的是这样的:

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

您使用游标的具体原因是什么?以及为什么你写“Order by by org.name”。它应该是orgname。 – Muse