数据库索引超出范围

meilibook3 2013-08-17 10:54:21
大家好,下面是我的一些程序,值都有取到,sql执行没问题,可是报错
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [select * from dbo.NOTICE_TABLE where [NOTICE_NAME] like '%标题001%'and [NOTICE_details] like '%%' and [NOTICE_STATE] like '%%']; SQL state [S1093]; error code [0]; 索引 1 超出范围。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围。
com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围。
请问是什么问题,下面是具体程序,谢谢协助


public int queryNotice(String name,String details,String state) throws SQLException {
int num = 0 ;
String sql = "select * from dbo.NOTICE_TABLE where [NOTICE_NAME] like '%"+name+"%'and [NOTICE_details] like '%"+details+"%' and [NOTICE_STATE] like '%"+state+"%'";
// String sql = "select * from dbo.NOTICE_TABLE where [NOTICE_NAME] like '%标题001%'and [NOTICE_details] like '%%' and [NOTICE_STATE] like '%%'";
JdbcTemplate jt = new JdbcTemplate(this.getDataSource());
num = jt.queryForInt(sql,new String []{name,details,state});
return num;
}

...全文
946 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主写错了 num = jt.queryForInt(sql,new String []{name,details,state}); 表示的是将sql中的 ?占位符替换成你传递的参数 ,但是你直接拼接的sql,所以就不需要传递参数了。。。
meilibook3 2013-08-19
  • 打赏
  • 举报
回复
sql语句换成select * from dbo.NOTICE_TABLE where [NOTICE_NAME] like '%"+name+"%'and [NOTICE_details] like '%"+details+"%' and [NOTICE_STATE] like '%"+state+"%' sql语句换成select * from dbo.NOTICE_TABLE where [NOTICE_NAME] like '%?%'and [NOTICE_details] like '%?%' and [NOTICE_STATE] like '%?%'或许可行
meilibook3 2013-08-18
  • 打赏
  • 举报
回复
还是不行,还有解决方案吗?
meilibook3 2013-08-17
  • 打赏
  • 举报
回复
好的,我试试
暖暖猫 2013-08-17
  • 打赏
  • 举报
回复
state 是没有值的吗,好像是这个字段报错了,你给这个赋值查询试试看
meilibook3 2013-08-17
  • 打赏
  • 举报
回复
模糊查询,后面是没有输入的查询条件,这个是可以的呀
暖暖猫 2013-08-17
  • 打赏
  • 举报
回复
不知道你为什么传好多的空值到后面呢?

81,091

社区成员

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

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