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

Keanu_Rocky 2003-02-23 01:06:26
这是我用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的参数正确的传入?
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Keanu_Rocky 2003-02-24
  • 打赏
  • 举报
回复
我已经找到原因了。
我使用了微软提供的SQLServer Driver for JDBC以后,问题解决了。
开始的时候我用的是JDBC-ODBC桥。
Keanu_Rocky 2003-02-23
  • 打赏
  • 举报
回复
我试过了,在两头加单引号,还是不行,返回结果为空,各位有什么高见吗?
Keanu_Rocky 2003-02-23
  • 打赏
  • 举报
回复
红透半边天,你说的语句当然可以执行,但是我要做的是模糊查询啊,你说的语句不能达到目的。
灯泡和假死皮,你们说的我再试一下,看看可不可以。
zxhong 2003-02-23
  • 打赏
  • 举报
回复
"在SQL Server的查询分析器内却能够返回符合条件的行"
说明你的sql语句是正确的

"没有返回任何符合条件的行"
只能说明你数据库操作代码不正确
改正:
Statement stmt=conn.createStatement();
String sql="select * from dbname";
ResultSet rs=stmt.executeQuery(sql);


zhouzm 2003-02-23
  • 打赏
  • 举报
回复
好像是这个原因,你重新试试!
leonzhao 2003-02-23
  • 打赏
  • 举报
回复
姓名是char的话你是不是应该加上单引号?

Select * from 黑名单 where 姓名 like '%王五%'

当然如果SQL Server不是这样的话就当我没说。

I hate M$
  • 打赏
  • 举报
回复
在SQL ANALYZER上能执行是因为将%看成是模糊查询的首代码,而用"%name%"传入,则寻找的可能是一个字符串,建议最好不要用JDBC-ODBC桥,我以前用它出现了许多莫名其妙的问题.
还有该成用stmt.executeQuery(sql);试试.
zxhong 2003-02-23
  • 打赏
  • 举报
回复
"在SQL Server的查询分析器内却能够返回符合条件的行"
说明你的sql语句是正确的
zxhong 2003-02-23
  • 打赏
  • 举报
回复
我不是让你看我的sql语句,而是看结构
PreparedStatement pstmt=con.prepareStatement("Select * from 黑名单 where 姓名 like ?");
这种写法是不正确的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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