日期:2014-05-17  浏览次数:20718 次

透漏.net连接oracle的一个恶心BUG
我用.net做的winform程序,需要连接到oracle 10G,发现连接数据老是出错,乱搞了很久都没解决。后来才发现我原来的程序目录是
F:\ImportFormDataFile(1.1) ,把目录改为F:\ImportFormDataFile1.1,就OK了。就是程序目录中不能含有括号。不然数据库连接不上,不信你们试试看。

------解决方案--------------------
测试出来就行了。

括号是谁加上的?
------解决方案--------------------
根本没有这回事,我这里一切正常,特意将文件名里添加括号,一点问题都没有。
------解决方案--------------------
写错,是文件夹里添加括号
------解决方案--------------------
试过了,很正常,而且你说的情况本身不可能出现,不试就知道,因为程序目录和数据库的访问没有任何关系,数据库访问是通过连接字符串来访问的,你不把出错信息贴出来分析,主观臆断说是BUG,那只是推卸责任。
------解决方案--------------------
不会是LZ处理了括号吧
------解决方案--------------------
探讨

有兴趣可以试着把程序放在包含有括号的目录中,然后重新编译看看

------解决方案--------------------
测试是为了验证真伪,测试永远也不会是“为了荒唐”而测试。


------解决方案--------------------
探讨
有兴趣可以试着把程序放在包含有括号的目录中,然后重新编译看看

------解决方案--------------------
探讨

测试是为了验证真伪,测试永远也不会是“为了荒唐”而测试。

------解决方案--------------------
我实在模拟不出异常,Oracle也搞了好多年了,从没见过类似情况,你却一直不看给我看出错信息,让我自己模拟,这不是明显的难为人吗?
------解决方案--------------------
探讨
我没对括号做处理,用的是英文括号就不行了

------解决方案--------------------
据说有的oracle客户端是有这样的问题。
你试试用oralce客户端软件能否直接连上。如果能连,是.net的问题。如果不能连,是客户端问题。

话说.net已经放弃对oracle支持了,就是真的bug也不会改了。
------解决方案--------------------
这问题很好解决,看下当时的连接字符串是否正常(如果你怀疑Oracle的客户端版本太低了,可以再安装Oracle 11G的客户端)
我本地同时安装了10G和11G的客户端,10G是很早就装的,但后来发现11G的好用,又安装了一个,两者不存在任何冲突,11G单独提供的Oracle.DataAccess.dll,版本又2.0和4.0两种运行库支持,且访问的数据库版本不限制,而10G的只提供了1.0的版本,且不支持DbConnection的继承,不符合数据库的标准继承规范,因此废弃不用。另外微软的OracleClient已经明确被微软废弃,不能再用,功能上也有很大限制,因此我做的新版数据库访问类已经使用Oracle.DataAccess,支持Oracle高级语法,效率极高。
------解决方案--------------------
中文 空格 都可以试试




------解决方案--------------------
三个版本(1.0、2.0、4.0)的Oracle.DataAccess.dll都试过了,完全正常,项目所在目录后缀
D:\My Documents\Visual Studio 2010\Projects\WindowsFormsApplication(1.1)\ConsoleApplication1\
这样的目录结构应该符合要求,数据库操作类自己封装的,测试代码部分如下:
C# code
using (var conn = GetOracleConnection("V7HQS"))
{
    var sqltext = @"SELECT '上班' A FROM DUAL";
    var data = conn.Query<EFX>(sqltext).First();
    Console.WriteLine(data);
}
Console.WriteLine("按回车退出。");
Console.ReadLine();

------解决方案--------------------
探讨
据说有的oracle客户端是有这样的问题。
你试试用oralce客户端软件能否直接连上。如果能连,是.net的问题。如果不能连,是客户端问题。

话说.net已经放弃对oracle支持了,就是真的bug也不会改了。

------解决方案--------------------
好吧,程序员都会说:我这里是好的,不信你看。
------解决方案--------------------
探讨
话说.net已经放弃对oracle支持了,就是真的bug也不会改了。

------解决方案--------------------
探讨