使用 ODP.NET 访问 Oracle 数据库

26 篇文章 0 订阅

要相使用 Oracle Data Provider For .NET(ODP.NET),

必须先安装 ODP.NET 或者是 ODAC(Oracle Data Access Components)

(ODAC 中包含 ODP.NET 这个组件)

最好是把 ODT.NET 也安装上,这样,以后在 Visual Studio 中开发 Oracle 应用程序会方便很多的,

还是提供一个下载地址吧,

http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html

如果还没有安装的朋友请参考笔者前面的一些博文,其中都有比较好的介绍的,

本篇博文呢,将会完成一个 Demo ,这个 Demo 呢是从 Sql Server 中取出指定的数据表中的数据,

然后逐条将这些取出的数据插入到 Oracle 数据库中的指定表中,

其中呢,对 Sql Server 数据库的访问我就不说了,

对 Oracle 的访问呢,主要是通过 ODP.NET 来实现的,

前面的一篇博文<<通过 Reflector 工具来查看 ODP.NET 提供的类等信息>>

介绍了ODP.NET 中的一些类和命名空间,

在这一篇博文中就是使用这些类来完成 Demo ,当然涉及的类将会是很简单的最基本的类,

也就是 Connection,Command ,DataAdaptor 这些,

如果您需要使用 ODP.NET 下的其他一些类的话,

可以使用 Reflector 来反射出 Oracle.DataAccess.dll 中的内容,

首先要想在应用程序中使用 ODP.NET 来访问 Oracle 数据库的话,

您必须向当前的应用程序添加一个引用,

5

这个 Oracle.DataAccess 必须是在您安装了 Oracle Data Provider For .NET 后才可以引用,

6

添加了这个引用后,便可以来使用 Oracle.DataAccess 这个命名空间和其子内容了,

先来看页面设计吧,

image

其中对 SqlDataSource 进行的数据绑定操作按如下顺序进行

其中 SCOTT.ORACLE 便是我通过 ODP.NET 来与 Oracle 建立的一个数据库连接,

1

2

3

4

然后就是来看一下 Web.config 中的数据库连接字符串的设置吧

image

其中呢,包括一个 Oracle 数据库连接字符串(OracleScott)

也包括一个 SqlServer 数据库连接字符串(SqlServerCon)

然后就来看 Code-Behind 了

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Data;
 
using Oracle.DataAccess.Client; 
using Oracle.DataAccess.Types; 
using Oracle.DataAccess;
 
using System.Web.Configuration;

namespace WebForm 

    public partial class Demo__39 : System.Web.UI.Page 
    { 
        protected void Page_Load(object sender, EventArgs e) 
        {

        }

        protected void btnAddData_Click(object sender, EventArgs e) 
        { 
            
//获取 web.config 中的连接 SqlServer 数据库的字符串 
            string sqlServerConStr = 
                WebConfigurationManager.ConnectionStrings["SqlServerCon"]. 
                ConnectionString; 
            
//获取 web.config 中连接 Oracle 数据库的字符串 
            string oracleConStr = 
                WebConfigurationManager.ConnectionStrings["OracleSCOTT"]. 
                ConnectionString;

           //先是取出 SQL Server 中的数据,并且存放在 DataSet 中 
            DataSet ds = new DataSet();

            using (SqlConnection sqlCon = new SqlConnection(sqlServerConStr)) 
            { 
                using (SqlCommand sqlCom = sqlCon.CreateCommand()) 
                { 
                    string sqlStr = 
                        "SELECT 员工号码,姓名,性别,目前工资 FROM 章立民研究室"; 
                    sqlCom.CommandType = CommandType.Text; 
                    sqlCom.CommandText = sqlStr; 
                    using (SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCom)) 
                    { 
                        
//将数据全部存入 DataSet 数据集中 
                        sqlDA.Fill(ds); 
                    } 
                } 
            } 
            using (OracleConnection oracleCon = new OracleConnection(oracleConStr)) 
            { 
                oracleCon.Open(); 
                using (OracleCommand oracleCom = oracleCon.CreateCommand()) 
                { 
                    
oracleCom.CommandType = CommandType.Text; 
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
                    { 
                        
//从 DataSet 逐条检索数据并且存储到 Oracle 数据表 Employee 
                        string sqlStr = String.Format( 
                            "INSERT INTO EMPLOYEE(EMPID,EMPNAME,EMPSEX,EMPSALARY) " + 
                            "VALUES({0},'{1}','{2}',{3})", 
                            ds.Tables[0].Rows[i][0], 
                            ds.Tables[0].Rows[i][1], 
                            ds.Tables[0].Rows[i][2], 
                            ds.Tables[0].Rows[i][3]); 
                        oracleCom.CommandText = sqlStr;

                        oracleCom.ExecuteNonQuery(); 
                    } 
                } 
            }

            //只能从数据库中取一次数据 
            btnAddData.Enabled = false; 
        } 
    } 
}

下面就来看效果了,

下面的截图是还没有从 Sql Server 中拷贝数据到 Oracle 数据库之前,

Oracle 中本来的数据,

image

执行拷贝数据后的结果为

image

image

如此便成功实现了使用 ODP.NET 访问 Oracle 数据库了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值