ORA-00928 manquantes SÉLECTIONNEZ mot-clé dans oracle
J'utilise le code suivant pour insérer des données. Mais je reçois l'erreur comme "ORA-00928: missing SELECT keyword"
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@xxx.xxx.x.xxx:xxxx:xxxx", "xxxx", "xxxx");
String query="insert into offer1('RCODE','OFFERNO','DAT') values(?,?,?)";
PreparedStatement ps=conn.prepareStatement(query);
ps.setString(1,r_code);
ps.setString(2,offerno);
ps.setDate(3,sqlDate);
ResultSet rs=ps.executeQuery();
out.println("data inserted");
}catch(Exception e)
{
out.println(e);
}
Je ne vois pas d'erreurs dans ce code. Si quelqu'un à trouver, s'il vous plaît dites quelle est l'erreur et comment la résoudre?
Il ya tout à fait 2 problèmes, il est de retirer le sigle de devis pour les noms de colonne et au lieu d'utiliser
executeQuery()
utilisation executeUpdate()
et plus sur pour insérer une déclaration que resultset attendez-vous.OriginalL'auteur Lingasamy Sakthivel | 2013-02-06
Vous devez vous connecter pour publier un commentaire.
Sans les guillemets simples, essayez
Vous êtes les bienvenus! Heureux d'être de l'aide!
:)
La vraie solution serait évidemment de la base de données pour donner un message d'erreur correct, c'est juste une solution de contournement.
OriginalL'auteur Orangecrush
guillemets simples sont des littéraux de chaîne pas pour identificateurs seulement donc il faut l'enlever autour de la columnNames.
et l'utilisation
executeUpdate
puisque vous n'êtes pas récupérer les documents qui entraîne une resultset.de DOCS
boolean exécuter()
ResultSet executeQuery()
int executeUpdate()
OriginalL'auteur John Woo
S'il vous plaît essayer cette
OriginalL'auteur Madhav
Essayer
Statement.executeUpdate
au lieu deexecuteQuery
.OriginalL'auteur yshavit
Exécute la requête SQL dans cet objet PreparedStatement et retourne l'objet ResultSet généré par la requête.
Exécute l'instruction SQL dans cet objet PreparedStatement, qui doit être un SQL INSERT, UPDATE ou DELETE; ou une instruction SQL qui renvoie rien, comme une instruction DDL.
Donc, au lieu d'utiliser
ResultSet rs = ps.executeQuery();
utilisation int result = ps.executeUpdate();elle renvoie le nombre de lignes de commandes INSERT, UPDATE ou DELETE, ou 0 pour les instructions SQL qui renvoie rien
OriginalL'auteur
J'ai été en cours d'exécution sur le même sujet, et dans mon cas, la requête comme ceci:
Le problème a été causé par le
number
nom de la colonne depuisnumber
est un mot clé réservé dans Oracle, et l'exception a été "ORA-00928: manquant SÉLECTIONNEZ le mot-clé".Donc, le
number
nom de la colonne doit être échappé:et tout fonctionne bien maintenant.
OriginalL'auteur Vlad Mihalcea