以前有个工具是用asp.net做的,连接的是sql server数据库,现今的项目也有个类似的功能需要做,但是数据库采用的是oracle数据库,小工具吗,没有必要整什么所谓的多数据库兼容,于是采取简化的方案,直接把.net用于操作sql server数据库的那一套全都换成了操作oracle数据库的那一套.net类,引用的是Framework自带的System.Data.OracleClient,连接字符串也换成了oracle风格的
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=IP或机器名/数据库;Persist Security Info=True;User ID=用户名;Password=密码;Unicode=True"/> </connectionStrings>
一启动,居然出现类似下面的错误
"System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本"
难道我本地要安装Oracle 客户端软件,应该不用吧,我只是想连接一下而已;于是baudu、google一把,有的建议用oracle官方的ODP.net,登陆官方一看不要紧,相关工具要200多M,天哪,难道就没有点省事的方法吗,于是继续找查询方案,在csdn上找到了答案,即需要把两个dll(download)拷贝到%windir%\system32下即可。
再次连接,果然可以啦,但是又有一些问题,即sql server与oracle的sql语句不兼容问题:
1、top 10
SQL Server
Select top 10 colA from tableA
放在oracle环境下运行不同,报类似“找不到from”之类的错误,错误提示真不友好!后来在网上找了下,可以变成类似下面的方案。
oracle
Select colA from TableA where rownum<=10
2、SQL Server为避免列明与关键字重复可以加“[]”,比如[name],这个东西在oracle中也不承认,需要把“[]”去掉。
3、SQL server中的“+”连接字符串
Select colA+":"+colB as AB from TableA
这个在oracle中也不行,需要写成
select colA || ':' || colB as AB from TableA
这些都是小问题,最主要的是搞定连接那一步。