name = "'%"+name+"%'"; SQL语句 select name from book where name like %book% 不行, 应该是 select name from book where name like '%book%'
String sql="select name from book where name like ?"; PreparedStatement ps = con.prepareStatement(sql); String name = "book"; name = "%"+name+"%"; ps.setString(name); ResultSet rs = ps.executeQuery();我测试的结果是可以的。但是setString函数的参数要求是2个。你试试看 我写的是: ps.setString(1, name);我用的是resin+mysql
提示大家:PreparedStatement的用法和直接的SQL语句是不同的,在PreparedStatement中,不是直接写SQL而是把变量用?表示,然后在用setString赋值 因此,可以这样用: String sql="select name from book where name like ?"; PreparedStatement ps = con.prepareStatement(sql); String name = "book"; name = "%"+name+"%"; ps.setString(name); ResultSet rs = ps.executeQuery();而不用引号。
SQL语句
select name from book where name like %book% 不行,
应该是 select name from book where name like '%book%'
PreparedStatement ps = con.prepareStatement(sql);
String name = "book";
name = "%"+name+"%";
ps.setString(name);
ResultSet rs = ps.executeQuery();我测试的结果是可以的。但是setString函数的参数要求是2个。你试试看
我写的是:
ps.setString(1, name);我用的是resin+mysql
因此,可以这样用:
String sql="select name from book where name like ?";
PreparedStatement ps = con.prepareStatement(sql);
String name = "book";
name = "%"+name+"%";
ps.setString(name);
ResultSet rs = ps.executeQuery();而不用引号。
多谢楼上
我想那个ps.setString(name);
应该是楼主打少了,不是没有两个参数
要不然楼主应该看到报错才对
ps.setString(name);
确实是打少了ps.setString(1,name);
是笔误,但是程序中没有笔误,难道大家真的能查到数据吗?我运行没有任何问题,只是说,查不到应该查的数据。
:)%book%
匹配的时候两头各有一个字符,中间是book
的这样的数据吧?
因为数据中有两条name为book的数据。
其中的%表示任何字符以及空字符我用JDBC-ODBC连接SQL Server没有取到数据
连续2次用 rs.getString("name"),那么第二次就会返回null还有楼主的问题,总之JDBC-ODBC不好用。也许专用的Driver好一些。
免费的JDBC-ODBC就是有问题啊。
而不是rs.getString("name")返回null
fander你能进入到while(rs.next())中去吗?难道这是PrepareStatement的硬伤。难道就没有人做过用PrepareStatement做过like查询的吗?
不是PrepareStatement的问题,就是JDBC-ODBC的问题。我用微软的JDBC for SQL Server就能得到结果了。
大家不要用JDBC-ODBC了,问题太多了。如果用商业的JDBC-ODBC可能没问题。String wc_DBType = "SQLServer";
String wc_JDBC = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String wc_DBConnectionString = "jdbc:microsoft:sqlserver://localhost:1433";
String wc_username = "demo";
String wc_password = "demo";
Class.forName(wc_JDBC);
java.sql.Connection con=null;
con = java.sql.DriverManager.getConnection(wc_DBConnectionString, wc_username, wc_password);String sql="select name from class1 where name like ?";
java.sql.PreparedStatement ps = con.prepareStatement(sql);
String name = "留学";
name = "%"+name+"%";
ps.setString(1, name);
java.sql.ResultSet rs = ps.executeQuery();
while(rs.next())
{
out.println(rs.getString("name"));
}
rs.close();
ps.close();
con.close();结果:
留学时讯
出国留学
留学研究
留学生园地