mysql syntaxerror_JDBC使用正确的语句返回MySQLSyntaxError异常

我正在用Java开发与MySQL

db通信的应用程序,而在测试它时,我注意到在表中插入新行的代码引发了MySQLSyntaxError异常,因此我尝试使用MySQL

Workbench执行相同的INSERT,而且有效。有问题的代码是这样的:

public static boolean aggiungiElem(String nome, GrafoGenerico g){

if(connessioneAperta()){

try{

String sqlCommandUser="SELECT USER()";

String sqlCommandInserim="INSERT INTO salvataggi VALUES ( ? , ? , DEFAULT , NULL );";

PreparedStatement sUser=conn.prepareStatement(sqlCommandUser);

ResultSet risultatiUtente=sUser.executeQuery();

String utente = null;

while(risultatiUtente.next()){

utente=risultatiUtente.getString(1);

}

sUser.close();

PreparedStatement sInserim=conn.prepareStatement(sqlCommandInserim);

sInserim.setString(1, utente);

sInserim.setString(2, nome);

//sInserim.setObject(3,g);

System.out.println(sInserim.toString());

sInserim.executeUpdate(sqlCommandInserim);

sInserim.close();

return true;

}

catch(SQLException e){

e.printStackTrace();

return false;

}

}

else

return false;

}

编辑:对不起,堆栈跟踪是:

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 '? , ? , DEFAULT , NULL )' 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:407)

at com.mysql.jdbc.Util.getInstance(Util.java:382)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1989)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2150)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)

at se.diag.control.clientspec.UtilsClientSQL.aggiungiElem(UtilsClientSQL.java:67)

at se.diag.control.clientspec.UtilsClientSQLTest.testAggiungiElem(UtilsClientSQLTest.java:67)

at se.diag.control.clientspec.UtilsClientSQLTest.testCaricaElem(UtilsClientSQLTest.java:99)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)

at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)

at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)

at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)

at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)

at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)

at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)

at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)

at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)

at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值