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 数据库的话,
您必须向当前的应用程序添加一个引用,
![]()
这个 Oracle.DataAccess 必须是在您安装了 Oracle Data Provider For .NET 后才可以引用,
![]()
添加了这个引用后,便可以来使用 Oracle.DataAccess 这个命名空间和其子内容了,
先来看页面设计吧,
![]()
其中对 SqlDataSource 进行的数据绑定操作按如下顺序进行
其中 SCOTT.ORACLE 便是我通过 ODP.NET 来与 Oracle 建立的一个数据库连接,
![]()
![]()
![]()
![]()
然后就是来看一下 Web.config 中的数据库连接字符串的设置吧
![]()
其中呢,包括一个 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 中本来的数据,
![]()
执行拷贝数据后的结果为
![]()
![]()
如此便成功实现了使用 ODP.NET 访问 Oracle 数据库了!!!
ODP.NET 之访问 Oracle 数据库的更多相关文章
- 在开发框架中扩展微软企业库,支持使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库
在前面随笔<在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容3 ...
- 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动
由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...
- .net(C#)访问Oracle数据库的几种免安装组件的对比
Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...
- .net(C#)访问Oracle数据库的几种免安装组件的对比(转)
原文地址 [内容为转载,个人推荐还是用官方的组件,推荐使用 Oracle.DataAccess.dll ] .net(C#)编程过程中,使用到了以下三种免安装的Oracle访问组件,能够不安装Orac ...
- Winform 利用 Oracle.ManagedDataAccess访问Oracle数据库
Winform 利用 Oracle.ManagedDataAccess访问Oracle数据库时出现以下错误: Message = "每个配置文件中只允许存在一个 <configSect ...
- 用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理
1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...
- 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题
运行平台: Windows 7 64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 ...
- 【方法】如何限定IP访问Oracle数据库
[方法]如何限定IP访问Oracle数据库 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...
- c#访问oracle数据库
想在c#中访问oracle数据库,毕竟是开发,想要轻量级访问oracle,客户机上无需安装oracle环境就能正常运行程序. 在网上找了相关资料,只需要引用一个dll即可实现. 访问代码(需引用dll ...
随机推荐
- WPF中的三维空间(2)
原文:WPF中的三维空间(2) 2.10.3 三维对象操作 1.在二维平面空间移动.缩放.旋转Viewport3D控件对象 图2-196 选中Viewport3D控件对象 图 ...
- JAVA编程思想(2) - 操作符(一)
"在最底层,Java中的数据是通过操作符来操作的." 1. 使用Java操作符 -操作符接受一个或者多个參数,并生成一个新值,參数的形式与普通的方法调用不用,但效果是同样的.加号和 ...
- 【Android进阶】自定义控件实现底部扇形展开菜单效果
这个项目是优化的其他人的,主要优化了界面菜单的显示,下面开始. 先看效果图 项目的总结构 下面开始贴代码,由于必要的地方都添加了注释,所以不过多讲解 anim_button.xml <?xml ...
- 【C语言探索之旅】 第一部分第五课:运算那点事
内容简介 1.课程大纲 2.第一部分第五课:运算那点事 3.第一部分第六课预告:条件表达式 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...
- RedHat Linux乱码解决方案(转)
RedHat Linux中出现中文乱码主要是由于没有安装中文字体,因此解决方案主要是安装中文字体,所以 第一步,挂载安装的光盘 在虚拟机的菜单栏里,选择:VM->Settings,点击Setti ...
- JMS分布式应用程序异步消息解决方案EhCache
高速缓存同步问题
部分博客中描述的使用拦截器怎么用EJB公布的WebService加入缓存,这样能够提高WebService的响应效率.但是即使是这样做,还是要经历网络的传输的.于是决定在调用WebService的程序 ...
- 系列五AnkhSvn
原文:系列五AnkhSvn AnkhSvn介绍 AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交.更新.添加文件,而不用在命令行或资源管理器中提交.而且该插件属于开 ...
- oracle 创建字段自增长——两种实现方式汇总(转)
mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能. 因为两种方式都需要通过创建序列来实现,这里先给出序列的创建 ...
- linux下串口调试工具/串口终端推荐: picocom
对于picocom, kermit, minicom, picocom 最简单易用,也全然符合我的使用需求. 安装(mint / ubuntu): $ sudo apt-get install pic ...
- android 更新实现自己主动
其主要原理是: 在应用程序启动.取server在版本 , 以下这个是获取当前应用的版本号信息 private void getCurVersion() { try { PackageInfo pInf ...