心急如焚,关于调用存储过程的问题求教高手

bsd 2003-03-28 05:29:25
在SQLServer2000中
偶有一个存储过程带了多个参数
其中有一个参数是sql的代码片断
形如("name like '%tom%'")
在存储过程中该参数将被用来与其它代码拼装成一个完整的SQL语句
以便执行
问题是
偶在查询分析器中执行调用存储过程的命令得出正确的结果
但使用Java的CallableStatement时,
String sqlStr = "{call getRecords (? , ?, ?, ?)}";
CallableStatement cstmt = conn.prepareCall(sqlStr);
cstmt.setString(1,id);
cstmt.setString(2,from);
cstmt.setString(3,to);
cstmt.setString(4,"name like '%tom%'");
cstmt.executeQuery(); //这一行报错:(

执行executeQuery()就报错
java.sql.SQLException: General error

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6060)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)

at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:2533)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:217)

at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:92)

at test.tmptest.TestCallableStatement.getRecord(TestCallableStatement.java:40)

at test.tmptest.TestCallableStatement.test(TestCallableStatement.java:71)

at test.tmptest.TestCallableStatement.main(TestCallableStatement.java:76)

请诸位大侠指点!多谢了

...全文
47 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zpwly 2003-03-28
  • 打赏
  • 举报
回复
祝贺一下吧
bsd 2003-03-28
  • 打赏
  • 举报
回复
问题出在偶定义的@sqlStr长度太短
现在解决了
bsd 2003-03-28
  • 打赏
  • 举报
回复
问题解决
谢谢!
zhaoxichao 2003-03-28
  • 打赏
  • 举报
回复
可能跟%转义符有关
(4,"name like '%"+tom+"&'");
或者
(4,"name like '%%tom%%'");

81,122

社区成员

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

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