天天看点

.net程序员使用Oracle新手上路指南

虽然oracle,sqlserver都是关系型数据库,sql语句大部分也差不多,但是从sqlserver换到oracle还是有很多不适应的地方,本文旨在帮助广大初次接触oracle的.net程序员快速上手。

一、安装oracle 11g 服务端(可选)

1.1 为什么要安装服务端?

理论上讲,本机只需要安装oracle客户端即可,但是很多时候本机有一个服务端学习起来会更方便。比如:数据库的导入/导出,数据库的创建等,均需要服务端。

注:oracle的server真的很占内存,如果您的爱姬内存在2G以下,建议直接跳过本步骤吧.

1.2 服务端的安装文件下载地址

<a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html">http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html</a>

因为我的笔记本是Win2008 R2系统,所以选择了特定的win2008 x64版本(安装文件约1.9G),下载地址如下

<a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/111070-win64-2008soft-084715.html">http://www.oracle.com/technetwork/database/enterprise-edition/downloads/111070-win64-2008soft-084715.html</a>

在win200 r2上安装时,会提示操作系统不满足安装要求,如下图:

.net程序员使用Oracle新手上路指南

不用理会,直接把问题项前面的复选框勾上,然后就能进入下一步继续安装了。

安装完成的最后一个界面上,在口令管理里,最好把scott帐号解除锁定(这是学习oracle的经典帐号,很多示例教程都是用这个帐号连接的,其默认密码是tiger)

.net程序员使用Oracle新手上路指南
.net程序员使用Oracle新手上路指南

1.3 如何测试服务端是否安装正确了

先打开Net Manager

.net程序员使用Oracle新手上路指南

展开服务命名

.net程序员使用Oracle新手上路指南

点击左侧“红色叉”按钮下的图标

.net程序员使用Oracle新手上路指南

如果提示测试成功,则表示server端运行正常了。

二、安装for .Net特定的客户端 ODAC with Oracle Developer Tools for Visual Studio

这是oracle官方推出的for .net的连接客户端,性能优于微软自带的System.Data.OracleClient下的东东,也是目前综合性能最好的.net客户端

下载地址

<a href="http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html">http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html</a>

一路Next即可,如果提示操作系统不满足要求,参考前面安装服务端时的处理

三、安装pl/sql developer

oracle安装完成后,自带了一个叫sql plus的查询工具,相当于sqlserver中的查询分析器,能用它练习sql,但是这个东东功能太弱,实在是难用。

所以推荐大家用第三方的pl/sql developer,百度一下就能找到下载地址和注册码。

这个软件第一次启动的界面如下:

.net程序员使用Oracle新手上路指南
.net程序员使用Oracle新手上路指南

因为我们还没有配置tnsnames.ora文件(这个可以理解为web.config或machine.config,用于保存本机oracle client端的所有连接信息,只有正确配置以后,oracle client才能正确连接oracle db server)

进入 %oracle_home%\Network\Admin\Sample(注:%oracle_home%指oracle客户端安装后的根目录) 找到tnsnames.ora文件,把它复制到%oracle_home%\Network\Admin\下

用记事本打开,参照下面修改:

# Every line that begins with # is a comment line

#

# Create Oracle net service names, or aliases, for each database server

# you need to connect to.

# TNSNames.ora sample entry

# alias =

#  (DESCRIPTION =

#    (ADDRESS = (PROTOCOL = TCP)(HOST = myserver.mycompany.com)(PORT = 1521))

#    (CONNECT_DATA =

#      (SERVER = DEDICATED)

#      (SERVICE_NAME = orcl)

#    )

#  )

# You can modify the entry below for your own database.

# &lt;data source alias&gt; = Name to use in the connection string Data Source

# &lt;hostname or IP&gt; = name or IP of the database server machine

# &lt;port&gt; = database server machine port to use

# &lt;database service name&gt; = name of the database service on the server

local =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

解释一下:local是自己定义的名称,可以随便改,只要不重复就行了,host后面的部分是服务器ip地址,port是端口号,SERVICE_NAME是oracle server安装时的实例命名,修改完成后,保存。

再次打开pl/sql,会发现database下拉框里多出了一个local,如下图:

.net程序员使用Oracle新手上路指南

用户名输入scott,密码输入tiger,选择local,登录,成功!

.net程序员使用Oracle新手上路指南

三、.net与oracle的连接

这是初学者最头痛的问题,oracle有4种方式可供.net连接

3.1 古老的ODBC数据源连接

先打开"Microsoft ODBC管理员",如下图

.net程序员使用Oracle新手上路指南

会看到设置界面

.net程序员使用Oracle新手上路指南
.net程序员使用Oracle新手上路指南

在vs2010的server explorer面板中,创建一个connection

.net程序员使用Oracle新手上路指南

选择Change,再选择ODBC数据源

.net程序员使用Oracle新手上路指南

接下来的事情,大家照提示来就行了,不过我测试发现,ODBC方式在vs.net 2010/win2008 r2下,始终连接不上,

.net程序员使用Oracle新手上路指南

但是在控制面板的数据源里,test connection是成功的。

.net程序员使用Oracle新手上路指南

个中原因,也许只有微软知道,所以这种方式我是没实践成功,放弃!反正odbc这种老古董我也不喜欢。

3.2 微软自带的System.Data.OracleClient

同样,server explorer面板中,add 一个connection,在出来的界面中,选择change,切换成

.net程序员使用Oracle新手上路指南

输入用户名和密码后,就能连接成功。

.net程序员使用Oracle新手上路指南

除非你的项目将来不打算升级,否则不建议大家用这种方式。

为了引用System.Data.OracleClient,需要添加对System.Data.OracleClient.dll的引用,默认是在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0目录下

添加引用成功后,就能用下面的代码进行查询了:

3.3 oledb方式

.net程序员使用Oracle新手上路指南

连接字符串为

Provider=MSDAORA;Data Source=local;Persist Security Info=True;User ID=scott;Password=tiger

示例代码:

3.4 Oracle官方的ODP.Net

.net程序员使用Oracle新手上路指南

连接字符串为 DATA SOURCE=local;PERSIST SECURITY INFO=True;USER ID=SCOTT;Password=tiger

要使用ODP.Net,必须先添加对Oracle.DataAccess.dll的引用,该文件位于%Oracle_Home%\11.2.0\odp.net\bin\4下

示例代码如下:

为了测试这三种方式(ODBC不考虑)的性能,简单写了一段代码测试了一下:

运行结果:

Oracle.DataAccess.Client        5000次耗时:4711毫秒

System.Data.OleDb       5000次耗时:53684毫秒

System.Data.OracleClient        5000次耗时:8436毫秒

相信大家知道如何选择了吧,果然还是Oracle官方更熟悉自己的产品。