大家好,下面是我的一些程序,值都有取到,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;
        }

解决方案 »

  1.   

    state 是没有值的吗,好像是这个字段报错了,你给这个赋值查询试试看
      

  2.   

    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 '%?%'或许可行
      

  3.   

    楼主写错了
    num = jt.queryForInt(sql,new String []{name,details,state}); 
    表示的是将sql中的 ?占位符替换成你传递的参数  ,但是你直接拼接的sql,所以就不需要传递参数了