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

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)

请诸位大侠指点!多谢了

...全文
8 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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%%'");
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2003-03-28 05:29
社区公告
暂无公告