Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JAVA mysql INSERT error

Tags:

java

mysql

 private final static String INSERT = "INSERT INTO electric_usage" +
        "(objId, useTime, name, usage) " +
        "VALUES (?, ?, ?, ?)";    

    public static boolean insertUsage(int index, Timestamp time, String name, double usage) {
        Connection con = null;

        try {
            con = DBManager.getInstance().getConnection();

            PreparedStatement stmt = con.prepareStatement(INSERT);

            java.util.Date today = new java.util.Date();


            stmt.setInt(1, index);
            stmt.setTimestamp(2, time);
            stmt.setString(3, name);
            stmt.setDouble(4, usage);
            stmt.addBatch();

            stmt.executeBatch();
            stmt.close();

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            DBManager.getInstance().close();
        }

        return true;


    }

make INSERT query like this but this code occur syntax error

other load query is work fine only this INSERT quert occur error

im trying to INSERT query in console it occur same error

my query is wrong?

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 'usage) VALUES (192, '2015-09-10 13:55:57', 'test', 0.0045196452704869055)' at line 1

table is

objId(int length 8 not null)
useTime(timestamp length 0 not null)
name (varchar length 255 not null)
usage (double length 11 not null)
like image 299
user2637015 Avatar asked Feb 17 '26 20:02

user2637015


2 Answers

index is a reserved word so you should not use it to name a column. List of reserved words here: http://dev.mysql.com/doc/refman/5.6/en/keywords.html

like image 163
ThreeSidedCoin Avatar answered Feb 19 '26 08:02

ThreeSidedCoin


That's because your column names index/usage are all MySQL Reserve words and so needs to be escaped using backtique like below

INSERT INTO electric_usage (`index`, `time`, `name`, `usage`) 

Always avoid using table/column name as reserve word else you will have to suffer likewise. Use proper naming convention like prefix t_ for table names and c_ for column names.

like image 22
Rahul Avatar answered Feb 19 '26 08:02

Rahul



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!