这是 System.Data.OracleClient 的bug 吗?

智商无下限 2010-10-11 03:32:59
开发环境 vs2008
使用 m_factory = DbProviderFactories.GetFactory("System.Data.OracleClient"); 的方式连接oracle
结果发现 如果sql中含有 case 语句,则无法运行,但是在 oracle 本身的SQLPlus中没问题。而将 case 替换成 decode 则可以。
oracle版本为 oracle 10G
请问大家是否遇到了相似的问题。
有什么办法解决吗?
(第一个正确的解决方案给50分),如果问题过于复杂可以追加分数。
...全文
128 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailin668 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 l0f 的回复:]
引用 8 楼 hailin668 的回复:
没用System.Data.OracleClient,使用的dev的控件,引用using Devart.Data.Oracle
很好用 DEV

可以给个链接吗?
[/Quote]
http://www.devexpress.com/
自己看吧,有你需要的,而且你会很吃惊的...
haomaoye 2010-10-12
  • 打赏
  • 举报
回复
不懂 学习
智商无下限 2010-10-12
  • 打赏
  • 举报
回复
Microsoft OLE DB Provider for Oracle

Oracle Provider for OLE DB
有啥区别吗?
智商无下限 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 vrhero 的回复:]
如果System.Data.OleDb支持你更该试试ODP.NET了...显然是DataProvider的问题...
[/Quote]
呵呵,谢谢你,我下载了odp了,发现他太大了,比我软件都大。所以放弃了。
非常非常感谢vrhero、wuyq11 (你们俩的级别太高了,真的感到很荣幸。)
智商无下限 2010-10-12
  • 打赏
  • 举报
回复
感谢所有回复帖子的兄弟。
现在结贴了!
vrhero 2010-10-12
  • 打赏
  • 举报
回复
如果System.Data.OleDb支持你更该试试ODP.NET了...显然是DataProvider的问题...
智商无下限 2010-10-12
  • 打赏
  • 举报
回复
我用oledb方式居然好用了。
vrhero 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 l0f 的回复:]
系统抛出的应该是.net给出的错误。因为我的oracle是英文版的。正常的oracle的错误提示都是英语的
[语法错误: 列别名或“*”后应存在“,”或“FROM”。]
[/Quote]
这个异常就是DataProvider也就是System.Data.OracleClient不支持复杂语法...所以说你用ODP.NET试试,还不行就只有改成存储过程了...

DataProvider最好还是用官方的,不要随便用第三方组件以免未来不可知的麻烦...
智商无下限 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyq11 的回复:]
复杂的使用存储过程
提示什么错误
[/Quote]
系统抛出的应该是.net给出的错误。因为我的oracle是英文版的。正常的oracle的错误提示都是英语的
[语法错误: 列别名或“*”后应存在“,”或“FROM”。]
wuyq11 2010-10-11
  • 打赏
  • 举报
回复
复杂的使用存储过程
提示什么错误
智商无下限 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hailin668 的回复:]
没用System.Data.OracleClient,使用的dev的控件,引用using Devart.Data.Oracle
很好用 DEV
[/Quote]
可以给个链接吗?
hailin668 2010-10-11
  • 打赏
  • 举报
回复
没用System.Data.OracleClient,使用的dev的控件,引用using Devart.Data.Oracle
很好用 DEV
智商无下限 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lucky_yyx 的回复:]
在程序里
Oracle 大小写敏感 你把你写的 Select 都换成 大写的就可以了
[/Quote]
跟那个没有关系。请大家继续。
lucky_yyx 2010-10-11
  • 打赏
  • 举报
回复
在程序里
Oracle 大小写敏感 你把你写的 Select 都换成 大写的就可以了
智商无下限 2010-10-11
  • 打赏
  • 举报
回复
关键我这sql语句超简单:
就select 3个字段,其中一个字段用了个case,这个应该没问题吧。
zlkingdom 2010-10-11
  • 打赏
  • 举报
回复
一般好像没有直接在程序里写很复杂的SQL语句,用存储过程吧,然后调用存储过程应该就不会有这个问题了
智商无下限 2010-10-11
  • 打赏
  • 举报
回复
不要沉,自己顶。
vrhero 2010-10-11
  • 打赏
  • 举报
回复
复杂语言还是不要拼的好,改成存储过程吧...

或者下载ODP.NET试试,oracle还是用ODP.NET比较好...

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧