2017-02-19 2 views
-3

J'ai essayé d'insérer mes données dans mon nom de table de base de données appelé newdevice. Ma requête est:Erreur lors de l'insertion de données dans la base de données

String query= uni +"," + nam +","+ temp + "," + vendor + "," + invoice +","+ dop +"," + cost ; 
       res=stm.executeQuery("INSERT INTO newdevice " + "(uniqueid , device , device_status , vendor_name , invoice , dop , cost)" + " VALUES(" + query +")"); 

Mais alors que je fais cela face à cette erreur:

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Erreur SQL dynamique Code d'erreur SQL = -104 Jeton inconnu - ligne 1, colonne 106

(,) son indiquant erreur avec virgule.

Répondre

0

Quelque chose ne va pas avec les guillemets. Je suppose que la déclaration (uniqueid , device , device_status , vendor_name , invoice , dop , cost) ne devrait pas être en guillemets doubles. pouvez-vous essayer d'enlever cette double citation.

2

Le problème est que vous manquiez probablement des guillemets autour des valeurs de chaîne, etc, mais vous ne devriez pas concaténer des valeurs comme ça. Il vous laisse ouvert à l'injection SQL. Au lieu de cela, vous devez utiliser un PreparedStatement avec des paramètres, comme ceci:

try (PreparedStatement pstmt = connection.prepareStatement(
     "INSERT INTO newdevice (uniqueid, device, device_status, vendor_name, invoice, dop, cost) VALUES(?, ?, ?, ?, ?, ?, ?)" 
    pstmt.setInt(1, uni); 
    pstmt.setString(2, nam); 
    pstmt.setInt(3, temp); 
    pstmt.setString(4, vendor); 
    pstmt.setInt(5, invoice); 
    pstmt.setInt(6, dop); 
    pstmt.setBigDecimal(7, cost); 
    pstmt.executeUpdate(); 
} 

Notez que j'ai fait une estimation aléatoire aux types de données réelles pour l'setXXX.

+0

Je pense que son bon de faire référence à cette http://stackoverflow.com/documentation/jdbc/2939/preparedstatement#t=201702191955028007576 afin qu'il puisse en apprendre davantage sur PrepapredStatement :) –

+0

Remerciez you.now son travail. –

+0

@Rajkumar Si ma réponse vous a aidé à résoudre le problème, veuillez l'accepter en cliquant sur la coche. –