ODP.NET 之访问 Oracle 数据库

本文演示了如何使用Oracle Data Provider for .NET (ODP.NET) 从SQL Server复制数据到Oracle数据库。通过创建一个简单的Web应用程序,文章详细介绍了如何配置数据库连接、执行SQL查询并将数据插入Oracle表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要相使用 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、付费专栏及课程。

余额充值