jdbc 用preparedstatement对数据库赋值时的错误 求大神

public ResultSet query(String sql,String[] para)
{
try {
ps=ct.prepareStatement(sql);
//对sql的参数赋值
for(int i=0;i<para.length;i++)
{
ps.setString(i+1, para[i]);
}
//执行查询
rs=ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
//返回结果集
return rs;

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.validateParameterIndex(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.setObjectInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.setString(Unknown Source)

java.lang.NullPointerException
at com.mhl.model.usermodel.checkuser(usermodel.java:30)
at com.mhl.view.userlogin.actionPerformed(userlogin.java:128)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)

    上边的代码用debug一步步走  跳出for循环后就直接出现错误了

ps.setString(i+1, para[i]);参数是否对,是否都是字符串。

你检查下 sql 中有几个 “?” , 在“ps.setString(i+1, para[i]);” 之前 打印 system.println.out("设置前i:"+i); 在之后加一句 system.println.out("设置后i:"+i); 你看看打印结果,应该就明白了。
宁外,你这代码发的不全吧,ct 是哪儿来的,出异常了,万一数据库连接酶关怎么办

跳出for循环就报错,报错说无效的参数绑定,说明你的参数没绑定对。检查一下你的sql的问号,又或者你的ct或ps是null,debug看看