我在我的oracle(11g)数据库中创建了两个表,如下所示:
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();
for command.ExecuteReader()我有一个“ORA-00911:无效字符”错误。
答案 0 :(得分:161)
删除;从SQL字符串
结尾处的(分号)答案 1 :(得分:33)
如果其他人在这里寻找如何在一个命令中包含多个语句,您需要将语句包装在开始和结束中。这将停止由于冒号导致的无效字符错误。例如:
var command = new OracleCommand(@"
begin
select * from test;
select * from test2;
end;")
答案 2 :(得分:1)
为什么在查询中使用分号...它只是被视为无效字符..... 您必须从查询中删除分号(;),并执行以下操作:
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();
有关此错误的更多详细信息,请阅读here。
答案 3 :(得分:1)
这不是这个人的问题,但希望这会帮助那些人:
我经常遇到隐藏在内联注释中的单引号的问题,如下所示:
select foo
from bar
where
/* some helpful comment with a "can't" or somesuch */
baz='qux'
评论中无与伦比的单引号引起了各种各样的戏剧,而oracle并没有竭尽全力帮助你解决这个问题。
答案 4 :(得分:-1)
将{em> sqldatasource 参数?
替换为:Column_name
,delete
和update
命令中的insert
。