String sql="select * from Data where (Name like '%' + ? + '%') or (Name=?) or (Note like '%' + ? + '%') or (Class like '%' + ? + '%') or (Class=?)";
java.sql.PreparedStatement stmt = conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setString(1,sqlkeyword);
stmt.setString(2,sqlkeyword);
stmt.setString(3,sqlkeyword);
stmt.setString(4,sqlkeyword);
stmt.setString(5,sqlkeyword);以上程序不能实现象"select * from data where name='123'"这样的效果,其他的不完全匹配完全正常实现,看看该怎么处理?
java.sql.PreparedStatement stmt = conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setString(1,sqlkeyword);
stmt.setString(2,sqlkeyword);
stmt.setString(3,sqlkeyword);
stmt.setString(4,sqlkeyword);
stmt.setString(5,sqlkeyword);以上程序不能实现象"select * from data where name='123'"这样的效果,其他的不完全匹配完全正常实现,看看该怎么处理?
java.sql.PreparedStatement stmt = conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,
java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setString(1,"%" + sqlkeyword + "%");
stmt.setString(2,sqlkeyword);
stmt.setString(3,,"%" + sqlkeyword + "%");
stmt.setString(4,,"%" + sqlkeyword + "%");
stmt.setString(5,sqlkeyword);改成这样试试看
已经包括了 or Name=?
所以or Name=?是多余的如果有其他等于条件
select * from aaa where id like '%'+?+'%' or id=?
这么写是不会出错的:
sql="select * from Data where Name like '%' + ? + '%' or Name=? or Note like '%' + ? + '%' or Class like '%' + ? + '%' or Class=?";