I'm trying to code multiple SQL queries statements in Java. The following SQL Statement Run without a problem in MySQL command line.
SELECT
@dispositivoID := MAX(self_id)
FROM
dispositivo;
SELECT
@pessoaID := MAX(self_id)
FROM
pessoa;
INSERT
INTO
Utilizador ( nome ,
email ,
telefone ,
pessoa_id ,
device_id ,
dt_criacao )
VALUES (?,
?,
?,
@pessoaID,
@dispositivoID,
now());
When I try to code the above SQL statement in Java, I encounter an error.
StringBuilder cmd = new StringBuilder();
cmd.append("SELECT @dispositivoID := MAX(self_id) FROM dispositivo; ");
cmd.append("SELECT @pessoaID := MAX(self_id) FROM pessoa; ");
cmd.append(INSERT);
cmd.append(getSimpleName() + OPEN);
cmd.append( NOME + COMMA + EMAIL + COMMA + TELEFONE + COMMA + PESSOA_ID + COMMA + DISPOSITIVO_ID );
cmd.append(COMMA + DATA_CRIACAO + CLOSE);
cmd.append("values (?, ?, ?, @pessoaID, @dispositivoID, now());");
System.out.println(cmd.toString());
try (PreparedStatement pStmt = DAO.getConnection().prepareStatement(cmd.toString())) {
pStmt.setString(1, ((modelo.utilizador.Utilizador)dataObject).getNome());
pStmt.setString(2, ((modelo.utilizador.Utilizador)dataObject).getEmail());
pStmt.setString(3, ((modelo.utilizador.Utilizador)dataObject).getTelefone());
pStmt.execute();
pStmt.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return false;
}
The following is the error which is encountered during the run:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT @pessoaID := MAX(self_id) FROM pessoa; INSERT INTO Utilizador ( nome , em' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:995)
at controlo.utilizador.Utilizador.insertObject(Utilizador.java:78)
at controlo.Run.tableInsert(Run.java:34)
at controlo.Run.main(Run.java:15)
false
Can someone help me figure out the error?