• ODP.NET 之访问 Oracle 数据库


    ODP.NET 之访问 Oracle 数据库

    要相使用 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 数据库了!!!

  • 相关阅读:
    通配符函数 MatchesMask 的使用
    WinAPI: GetComputerName 获取计算机名称
    TStringList 常用操作
    分割字符串 ExtractStrings
    磁盘类型 GetDriveType
    Delphi 的信息框相关函数
    Delphi 的运算符列表
    类型转换函数
    文件路径相关的字符串操作
    澳洲技术移民介绍
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4599988.html
Copyright © 2020-2023  润新知