2016-02-04 2 views
1

J'utilise une requête dans java pour l'insertion dans une base de données postgresql.

La requête que j'utilise fonctionne très bien quand je manuellement ajouter les paramètres, mais quand je donne les paramètres par déclaration préparée, il donne l'erreur:

ERREUR: erreur de syntaxe à ou près « $ 1 »

J'utilise le code suivant:

String InsertInTi="INSERT INTO ssr_timeline_test(" 
        +"ti_id, module_id, module_name, updated_date, tie_updates," 
        +"additional_options, co_count, ca_type)" 
        +"(?,?,?,current_timestamp,?,?,?,?)"; 

      pres = con.prepareStatement(InsertInTi); 
      pres.setInt(1,tId); 
      pres.setString(2,moduleId); 
      pres.setString(3,moduleName); 
      pres.setString(4,ti.toJSONString()); 
      pres.setString(5,additionalOption.toJSONString()); 
      pres.setInt(6,coCount); 
      pres.setString(7,caType); 
      System.out.println("Query : "+pres); 
      pres.execute(); 

quelqu'un peut-il proposer la solution pour la même chose?

J'ai également vérifié les types de valeurs qui sont transmises dans les parameters.These sont:

TimInsert(int tId , String moduleId, String moduleName , JSONObject ti, JSONObject additionalOption , int coCount , String caType) 
+0

Dans quelle ligne est l'exception jetée? Lorsque vous appelez 'prepareStatement()' ou lorsque vous appelez 'execute()' –

+0

a_horse_with_no_name, il se trouve sur la ligne d'exécution. – vaibhav

Répondre

7

Votre insert n'a pas une clause VALUES - ainsi l'erreur.

Modifier à

String InsertInTi="INSERT INTO ssr_timeline_test(" 
       +"ti_id, module_id, module_name, updated_date, tie_updates," 
       +"additional_options, co_count, ca_type) values " //added here 
       +"(?,?,?,current_timestamp,?,?,?,?)"; 

Et peut-être appeler executeUpdate() au lieu de execute()