Hallo,
ich versuche
in ein preparedStatement zu verpacken:
Allerdings bekomme ich die Exception:
Wenn ich auf der Serverkonsole USE "test"; absetze funktioniert es wunderbar ..
Ich habe schon setEscapeProcessing auf false gestellt, hat aber nichts gebracht. Laut Doku hat diese Funktion auch keinen Effekt mehr:
Nachtrag: Wenn ich das ohne preparedStatement mache, also:
gehts wunderbar.
Habt ihr eine Idee wie ich das Problem lösen könnte?
Freundliche Grüße,
majestic
ich versuche
SQL:
USE dbname;
Java:
this.useDb = (PreparedStatement) this.conn.prepareStatement("USE ? ;");
[....]
this.useDb.setString(1, dbname);
this.useDb.execute();
Allerdings bekomme ich die Exception:
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 ''Head'' (das sind zwei ') 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:525)
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:1052)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)
at database.ReadDatabase.readDb(ReadDatabase.java:65)
at database.ReadDatabase.answerRequest(ReadDatabase.java:93)
Wenn ich auf der Serverkonsole USE "test"; absetze funktioniert es wunderbar ..
Ich habe schon setEscapeProcessing auf false gestellt, hat aber nichts gebracht. Laut Doku hat diese Funktion auch keinen Effekt mehr:
Since prepared statements have usually been parsed prior to making this call, disabling escape processing for PreparedStatements objects will have no effect.
Nachtrag: Wenn ich das ohne preparedStatement mache, also:
Java:
Statement usedb = this.conn.createStatement();
usedb.execute("USE "+dbname);
gehts wunderbar.
Habt ihr eine Idee wie ich das Problem lösen könnte?
Freundliche Grüße,
majestic
Zuletzt bearbeitet: