com.microsoft.sqlserver.jdbc.SQLServerException: 索引 3 超出范围。异常。求高手帮忙解决下
/**
* @author admin
* @param Dog 宠物对象 根据宠物信息添加宠物对象
* @return int
* */
@Override
public int insertDog(Dog dog) throws Exception {
int result =0;
connection=getConnection();
pStatement=connection.prepareStatement("insert into dog(name,health,love,strain)values('?',?,?,'?')");
pStatement.setString(1, dog.getName());
pStatement.setInt(2, dog.getHealth());
pStatement.setInt(3, dog.getLove());
pStatement.setString(4, dog.getStrain());
result=pStatement.executeUpdate();
this.closeAll(null, pStatement, connection);
return result;
}
异常信息:
com.microsoft.sqlserver.jdbc.SQLServerException: 索引 3 超出范围。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:130)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:667)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue(SQLServerPreparedStatement.java:676)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setInt(SQLServerPreparedStatement.java:826)
at com.jbit.pet.impl.DogDaoImpl.insertDog(DogDaoImpl.java:76)
at com.jbit.pet.test.TestAddDog.main(TestAddDog.java:42)
我感觉是sql语句单引号与占位符的原因,究竟为什么不知道,求高手帮忙解决下。