mysql 准备语句 java [英] mysql prepared statement java

查看:47
本文介绍了mysql 准备语句 java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理我生成的准备好的语句,但在 java 抛出的语句中出现语法错误.然而,当我将 PS 的 toString 复制并粘贴到数据库的 phpmyadmin 中时,它可以完美地执行.任何想法可能是错的,我相当难倒?

edit: 改为 ps.executeUpdate(query);仍然不起作用.

public int addOrder(Order order){int rs=false;尝试 {String query = "INSERT INTO `orders`(`orderNumber`, `productNumber`, `quantity`, `orderer`, `assembler`, "+ "`meshType`、`beadType`、`beadCount`、`notes`、`dateCompleted`、`dateSubmitted`、`isComplete`)"+值(?,?,?,?,?,?,?,?,?,?,?,?)";PreparedStatement ps = con.prepareStatement(query);ps.setString(1, order.getOrderNumber());ps.setInt(2, order.getProductNumber());ps.setInt(3, order.getQuantity());ps.setString(4, order.getOrderer());ps.setString(5, order.getAssembler());ps.setString(6, order.getMesh());ps.setString(7, order.getBeadType());ps.setInt(8, order.getBeadCount());ps.setString(9, order.getNotes());ps.setLong(10, order.getDateCompleted().getTime());ps.setLong(11, order.getDateSubmitted().getTime());ps.setBoolean(12, order.getIsComplete());System.out.println(ps.toString());rs = ps.executeUpdate(查询);}捕获(SQLException e){//TODO 自动生成的 catch 块e.printStackTrace();}返回 rs;}

我收到的错误消息,前面是来自 addOrder 的 ps.toString().就像我说的,如果我将 toString 的相关部分复制粘贴到 phpmyadmin 中并执行它就可以了.对我做错了什么有任何想法吗?

 com.mysql.jdbc.JDBC4PreparedStatement@40378309: INSERT INTO`orders`(`orderNumber`, `productNumber`, `quantity`, `orderer`,`assembler`、`meshType`、`beadType`、`beadCount`、`notes`、`dateCompleted`、`dateSubmitted`、`isComplete`) 值('',251,1,'Mark','','Other','LBB',150,'这是一个测试',1357249393009,1357249393010,0)

<块引用>

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个SQL 语法错误;检查对应于您的手册MySQL 服务器版本,用于在附近使用正确的语法'?,?,?,?,?,?,?,?,?,?,?,?)' 在第 1 行sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown来源)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源)在 java.lang.reflect.Constructor.newInstance(未知来源)在 com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 在com.mysql.jdbc.Util.getInstance(Util.java:386) 在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053) 在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) 在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) 在com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) 在com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) 在com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728) 在com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2678) 在com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894) 在com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732) 在cbs.business.internalorders.Database.addOrder(Database.java:232) 在cbs.business.internalorders.IOGui$1.widgetSelected(IOGui.java:205) atorg.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source) atorg.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source) atorg.eclipse.swt.widgets.Widget.sendEvent(Unknown Source) atorg.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source) atorg.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source) atcbs.business.internalorders.IOGui.(IOGui.java:218) atcbs.business.internalorders.InternalOrders.main(InternalOrders.java:15)

解决方案

我终于找到了我的解决方案,由于某种原因它不喜欢我的 setStrings 所以我设置了很长的路并让它工作.谢谢!

I'm working with a prepared statement I've generated, and I'm getting a syntax error on the statement thrown by java. Yet when i copy and paste the toString of the PS into phpmyadmin for the database, it executes flawlessly. any idea's what could be wrong, i'm fairly stumped?

edit: changed to ps.executeUpdate(query); still doesn't work.

public int addOrder(Order order){
    int rs=false;
    try {
        String query = "INSERT INTO `orders`(`orderNumber`, `productNumber`, `quantity`, `orderer`, `assembler`, "
                + "`meshType`, `beadType`, `beadCount`, `notes`, `dateCompleted`, `dateSubmitted`, `isComplete`) "
                +"VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
        PreparedStatement ps = con.prepareStatement(query);
        ps.setString(1, order.getOrderNumber());
        ps.setInt(2, order.getProductNumber());
        ps.setInt(3, order.getQuantity());
        ps.setString(4, order.getOrderer());
        ps.setString(5, order.getAssembler());
        ps.setString(6, order.getMesh());
        ps.setString(7, order.getBeadType());
        ps.setInt(8, order.getBeadCount());
        ps.setString(9, order.getNotes());
        ps.setLong(10, order.getDateCompleted().getTime());
        ps.setLong(11, order.getDateSubmitted().getTime());
        ps.setBoolean(12, order.getIsComplete());
        System.out.println(ps.toString());
        rs = ps.executeUpdate(query);

    } 
    catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return rs;
}

the error message i get, preceded by the ps.toString() from addOrder. and like i said, if i copy paste the relevant part of the toString into phpmyadmin and execute it works fine. any ideas of what i'm doing wrong?

   com.mysql.jdbc.JDBC4PreparedStatement@40378309: INSERT INTO
 `orders`(`orderNumber`, `productNumber`, `quantity`, `orderer`,
 `assembler`, `meshType`, `beadType`, `beadCount`, `notes`,
 `dateCompleted`, `dateSubmitted`, `isComplete`) VALUES
 ('',251,1,'Mark','','Other','LBB',150,'this is a
 test',1357249393009,1357249393010,0)

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(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2678) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894) at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732) at cbs.business.internalorders.Database.addOrder(Database.java:232) at cbs.business.internalorders.IOGui$1.widgetSelected(IOGui.java:205) at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source) at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source) at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source) at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source) at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source) at cbs.business.internalorders.IOGui.(IOGui.java:218) at cbs.business.internalorders.InternalOrders.main(InternalOrders.java:15)

解决方案

I finally found my solution, For some reason it didn't like my setStrings so I set it the long way and got it to work. thank you!

这篇关于mysql 准备语句 java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆