wuydit 2015-09-23 03:35 采纳率: 0%
浏览 5270
已结题

发现一个神奇的问题 prepareStatement setString方法的问题

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class noSelect_Test {
/*
* 非查询sql语句
*/
public static int nonSelect(String sql,String...args){
System.out.println( args.length);

    //通过工具类获取数据库连接 
    Connection conn=DBUtils.getConnection();
    PreparedStatement ps=null;
    int rs = 0;
    try {
    ps= conn.prepareStatement(sql);

    for(int i=1;i<=args.length;i++){
        int c=i;
         /*  System.out.println(   args.length);
           System.out.println(i);
           System.out.println(u);
       ps.setString(i++, u);*/
          System.out.println(i);
          System.out.println(args[c-1]);
        ps.setString(i, args[c-1]);

    }

    rs=ps.executeUpdate(sql);


    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
        DBUtils.close(null, ps, conn);

    }
    return rs;
}

public static void main(String args[]){
String sql="insert into t_login (username,userpwd)values(?,?)";
nonSelect(sql,"57656","25456");

}
}

以上是操作

下面是
2
kaishi
1
57656
57656
2
25456
25456
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?)' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
at com.vince.jdbc.noSelect_Test.nonSelect(noSelect_Test.java:35)
at com.vince.jdbc.noSelect_Test.main(noSelect_Test.java:49)

你们说该怎么搞
  • 写回答

3条回答 默认 最新

  • 天涯云海 2015-09-23 05:25
    关注

    rs=ps.executeUpdate(sql);改成 rs=ps.executeUpdate();试试

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!