0

I'm trying to do a simple insert into a database with java and its telling me my sql syntax is off. But when I copyed the string I printed out and put it into the sql command in phpmyadmin it executes the command properly and I can't seem to figure out whats wrong with my string query in java.

java.sql.PreparedStatement statement;

String physicanInsertQuery = "INSERT INTO physician_phi VALUES(?,?,?,?,?,?,?,?)";
statement = ddp.getConnect().prepareStatement(physicanInsertQuery);

statement.setString(1, "id");
statement.setString(2, "first");
statement.setString(3, "last");
statement.setString(4, "middle");
statement.setString(5, "male");
statement.setString(6, "8179999999");
statement.setString(7, "[email protected]");
statement.setString(8, "1991-5-15");
System.out.println(statement.toString());
statement.executeUpdate(physicanInsertQuery);
statement.close();

This is the query that is printed out before I execute it.

INSERT INTO physician_phi VALUES('FML123','FirstName','LastName','MiddleName','Male','8179999999','[email protected]','1991-2-7')

This is the error its displaying in the console

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.GeneratedConstructorAccessor26.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:1054)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2819)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725)
    at command.up.DoctorStore.exec(DoctorStore.java:65)

....

This is the table in the db. enter image description here

2 Answers 2

5

You're calling the base Statement.executeUpdate(String) method, which has nothing to do with PreparedStatement and simply executes a string of raw SQL.

You need to call statement.executeUpdate() without parameters to use the derived method n PreparedStatement.

Sign up to request clarification or add additional context in comments.

1 Comment

I think I just died inside a little . . . man, why didn't I see that. Thank you very much for the point out.
-1

Don't you need a terminating ; on your sql statement. Also you should look into JPA, which will do all this database querying itself

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.