ORA-00911:无效的字符

我在我的oracle(11g)数据库中创build两个表,如下所示:

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

然后在我的C#程序中有一个问题:

  OracleConnection conn = new OracleConnection(-myConnectionString-); 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(); 

为两个command.ExecuteReader()我有一个“ORA-00911:无效的字符”错误。

去掉 ; (分号)从SQLstring的末尾开始

如果其他人在这里结束寻找如何在一个命令中包含多个语句,则需要在开始结束时包装您的语句。 这将停止由于分号导致的无效字符错误。 例如:

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

为什么你在查询中使用分号…它只是被视为无效的字符…..你必须从查询中删除分号(;),并像这样做:

  OracleConnection conn = new OracleConnection(-myConnectionString-); 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(); 

有关此错误的更多详细信息,请阅读此处 。

这不是这个人的问题,但希望这会帮助那里的人:

我经常遇到隐藏在行内注释中的单引号问题,如下所示:

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

评论中无与伦比的单引号引发了各种戏剧,而甲骨文并没有竭尽全力帮助你弄清楚这一点。

replacesqldatasource参数?:Column_name中的deleteupdateinsert命令。