2012-09-07 4 views
0

J'ai cette erreur lors de l'exécution d'une classe java pour mettre à jour une base de données mysqljava mysql update

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 'usage = 6000 where user_id = 1 and api_id = 1' 
at line 1 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct 
orAccessorImpl.java:39).. 

voici le code:

int u_id=1; 
int a_id=1; 

String url = "jdbc:mysql://localhost:3306/new_db"; 
String driver = "com.mysql.jdbc.Driver"; 
String userName = "root"; 
String password = "1234"; 
int APIusage = 0; 


try { 
    Class.forName(driver).newInstance(); 

    Connection conn = DriverManager.getConnection(url, userName, password); 
    String query = "update api_consume set usage = ? where user_id = ? and api_id = ?"; 
    PreparedStatement preparedStmt = conn.prepareStatement(query); 
    preparedStmt.setInt(1, 6000); 
    preparedStmt.setInt(2, u_id); 
    preparedStmt.setInt(3, a_id); 

    // execute the java preparedstatement 
    preparedStmt.executeUpdate(); 

    conn.close(); 
} 
catch (Exception e) { 
     e.printStackTrace(); 
} 

Pouvez-vous s'il vous plaît jeter un oeil sur pour voir pourquoi Il y a une erreur de syntaxe? grâce

+0

Et la question est? – Thomas

Répondre

4

usage est un reserved word dans MySQL, vous devez donc citer:

String query = "update api_consume set `usage` = ? where user_id = ? and api_id = ?"; 
0

Il est à cause de usage mot-clé. Changez ce nom de colonne à usage_msg ou quelque chose.