JDBC连接数据库以后传参数的问题,哪位高手帮忙指点一下,很急。

Keanu_Rocky 2003-02-23 11:09:58
这是我用JDBC-ODBC桥连接SQL Server2000的一段代码:
PreparedStatement pstmt=con.prepareStatement("Select * from 黑名单 where 姓名 like %?%");
pstmt.setString(1,name);
其中黑名单是数据库内的一个表,con是已经建立的与这个数据库的连接,我的目的是想建立一个模糊查询,但是这样抛出了一个Exception,查询无法进行。
后来我又想了一个办法,即将%直接加在name的首尾,譬如:如果name的值为'王五',则我将它处理为'%王五%'再查询,查询语句改为:
PreparedStatement pstmt=con.prepareStatement("Select * from 黑名单 where 姓名 like ?");
pstmt.setString(1,name);
这次不发生异常,但是却没有返回任何符合条件的行,而我用这个语句直接在SQL Server的查询分析器内却能够返回符合条件的行(实际上这样的行是存在的)。请问这是为什么??
怎样将like的参数正确的传入?
...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Keanu_Rocky 2003-02-24
  • 打赏
  • 举报
回复
我改用了微软提供的驱动程序,问题解决了。唉,纠缠了我一整天的问题!
谢谢大力。
pengdali 2003-02-23
  • 打赏
  • 举报
回复
PreparedStatement pstmt=con.prepareStatement("Select * from 黑名单 where 姓名 like ?");
pstmt.setString(1,"%"+name.trim()+"%");
pengdali 2003-02-23
  • 打赏
  • 举报
回复
PreparedStatement pstmt=con.prepareStatement("Select * from 黑名单 where 姓名 like '?'");
pstmt.setString(1,name); //name的值是'%王五%'
pengdali 2003-02-23
  • 打赏
  • 举报
回复
select * from 黑名单 where 姓名 like '%王五%'
在后台有记录吗
pengdali 2003-02-23
  • 打赏
  • 举报
回复
你下载sql for java的驱动呀!
Keanu_Rocky 2003-02-23
  • 打赏
  • 举报
回复
楼上的高手,我照你说的第二种方法做了,但是还是返回为空,这个是不是与JSP连接SQL Server的驱动程序有关呢?我用的是:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧