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

问题描述

发现一个神奇的问题 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)

你们说该怎么搞

解决方案

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

解决方案二:

同意楼上的说法,可以一试。

解决方案三:

ps= conn.prepareStatement(sql);
rs=ps.executeUpdate(sql);

你在构建 PreparedStatement 的时候已经传入了SQL语句  后面就不用传了
因为很有可能前面的SQL里面匹配好的参数值,被后面传入的SQL给替换掉了!

  rs=ps.executeUpdate();

    这样就好了      还有那个 c 变量是多余的!
时间: 2024-09-27 03:10:10

java-发现一个神奇的问题 prepareStatement setString方法的问题的相关文章

java当中一个类必须包含变量,方法,对象吗

问题描述 java当中一个类必须包含变量,方法,对象吗 可不可以单单有方法 单单有变量 java当中一个类必须包含变量,方法,对象吗 单单有对象 解决方案 不是的.一般的java类是有属性和方法的,比如实体类,有该实体的属性,和对应的get/set方法.有些业务类只有方法.根据需要只有组合. 解决方案二: java 对象使用类变量与方法(小笔记)java 当中变量存储位置的区别java中一个类想调用另一个类的变量 解决方案三: 没有这些说法,可以任意组合 解决方案四: 一个类里面什么都没有都可以

怎么用Java编写一个简单的登录系统?可以注册账号的那种

问题描述 怎么用Java编写一个简单的登录系统?可以注册账号的那种 数据库用的是MySQL,但Java操作方面的不知道怎么入手,求大神指点啊,有实例参考就更好了,谢谢 解决方案 import java.awt.event.*; import javax.swing.*; import java.awt.*; import java.awt.Container; import java.util.*; import java.sql.*; class Login extends JFrame im

spring-想用java写一个博客系统

问题描述 想用java写一个博客系统 想用java写一个自己的博客程序,现在问题来了,由于不想 用jsp+servlet感觉太乱,就苦苦在网上找该用什么框架,什么方案,能保证安全,能保证速度,这里问过一些朋友意见不一,下面是自己定出来的一些框架搭配 1.struts+spring+hibernate(感觉有hibernate的地方速度不怎么样) 2.springmvc+jdbctemplate 3.直接springmvc 4.springmvc+mybatis 这里想请教各位高手该如何选呢,或者

发现一个百度网盘搜索网站 一键搜索网盘资源

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 [发现]]一个百度网盘搜索的网站!!绝对好,不信进来 我今天刚好发现这个网盘屋!不敢私藏,马上就写帖子分享给各位小朋友们! 这个网盘屋主要是针对百度网盘的,有资源收藏控的朋友绝对值得拥有! 不喜欢百度 网盘的朋友勿喷!谢谢! 先来主要的介绍一下网盘屋的特点! 特点1:超级简单的一键搜索,输入关键词,点击搜索就可以找到自己想要的资源. 特点2:

“添加至百度首页”又一个神奇的按钮

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 昨天晚上打开百度首页的时候,百度提示首页进行改版,弹出如下图所示的页面.感觉酷酷的样子. 今天晚上我在搜索一些网站的时候,百度居然惊现"添加至百度首页"按钮,我把他定义为一个神奇的按钮,这个按钮和昨天更新的百度首页相呼应,无疑又是自百度推出"百度分享"后的又一个大动作. 我试着搜索了经常使用的电商:&q

前端-【一个神奇的问题】js函数返回值的问题

问题描述 [一个神奇的问题]js函数返回值的问题 两个js函数: function a(){ var str = '你好~'; return str; } 跪求解答: 我如何得到a()函数返回的值保存到一个变量里面去? 像java里这样 var b =a();我试过了,得不到值... 拜谢哇 解决方案 看看你是不是有定义了别的叫a的函数或者变量.光这么写没有问题. 解决方案二: function aaa(){ var str='你好~'; function bbb(){ alert(str);

button-安卓自定义Button一个神奇的问题

问题描述 安卓自定义Button一个神奇的问题 最近项目需要,为了方便自定义了一种Button,是直接继承安卓的Button . 大体功能就是设置一张.9背景图,以及传入一个自定义对象(该对象包含一个String,用于设置按钮的文字) 如下图: 奇怪的问题是.在Android 4.0.4上运行时候正常.但是在另一部手机上(4.4以上的版本)运行时,按钮大小根本没发生变化,按钮里面也不显示文字,只是一个空的按钮. 调试调用getText()发现按钮文字内容是正确的,但是就是不显示.这可能是什么问题

jsp-JSP中编写JS代码过程中,调用了一个JSP表达式,发现一个问题,麻烦各位大神解答

问题描述 JSP中编写JS代码过程中,调用了一个JSP表达式,发现一个问题,麻烦各位大神解答 背景: 楼主使用Myelipse新建了一个Web项目,在编写一个JSP文件的时候遇到一个问题,首先是使用了img,并且写了一个事件,代码如下: <imgclass="poke" src="poke/back.jpg" title="hit" id="play_id_3" onClick="change_pic()&qu

java swing 一个窗口打开新创口 加上go()程序就死掉了

问题描述 java swing 一个窗口打开新创口 加上go()程序就死掉了 import javax.swing.*; import java.awt.Rectangle;import java.awt.event.*; public class Swing7 extends JFrame implements ActionListener { JButton jb = new JButton(); public Swing7() { this.setTitle(""Java--&q