ORA-00911: caractère invalide

Je crée deux tables dans ma firebase database Oracle (11g) comme ceci:

create table "test" ("id" int); create table test ("id" int); 

Ensuite, dans mon programme C #, il y a un problème:

  OracleConnection conn = new OracleConnection(-myConnectionSsortingng-); conn.Open(); OracleCommand command = new OracleCommand("select * from test;", conn); var v = command.ExecuteReader(); OracleCommand command = new OracleCommand("select * from \"test\";", conn); var v = command.ExecuteReader(); 

pour les deux command.ExecuteReader () j’ai une erreur “ORA-00911: caractère non valide”.

Retirer ; (point-virgule) à partir de la fin de la chaîne SQL

Au cas où d’autres personnes se demanderaient comment inclure plusieurs instructions dans une seule commande, vous devez envelopper vos déclarations au début et à la fin . Cela arrêtera les erreurs de caractères non valides dues aux points-virgules. Par exemple:

 var command = new OracleCommand(@" begin select * from test; select * from test2; end;") 

Pourquoi utilisez-vous un point-virgule dans la requête … Il suffit de le prendre comme caractère invalide ….. Vous devez supprimer le point-virgule (;) de la requête et faire comme ceci:

  OracleConnection conn = new OracleConnection(-myConnectionSsortingng-); conn.Open(); OracleCommand command = new OracleCommand("select * from test", conn); var v = command.ExecuteReader(); OracleCommand command = new OracleCommand("select * from \"test\"", conn); var v = command.ExecuteReader(); 

Pour plus de détails sur cette erreur, vous pouvez lire ici .

Ce n’est pas le problème de ce type, mais j’espère que cela aidera quelqu’un là-bas:

J’ai souvent ce problème avec des guillemets simples cachés dans les commentaires en ligne, comme ceci:

 select foo from bar where /* some helpful comment with a "can't" or somesuch */ baz='qux' 

La citation unique inégalée dans le commentaire provoque toutes sortes de drames, et oracle ne fait pas tout son possible pour vous aider à le comprendre.

Remplacez le paramètre sqldatasource ? avec :Column_name dans les commandes delete , update et insert .