使用 ODP.NET 访问 Oracle

基于odp.net的oraclehelper 可以使用存储过程返回数据集 http://download.csdn.net/source/2247281 对于asp.net访问oracle数据库,微软已经再支持data.oraclecliet,意见使用odp.net来访问oracle了哦。比data.oraclecliet访问数据库效率更高的odp.net,使用微软的oraclehelper改写得到 ------------- 非常感谢 xifenfei 提供的文件,但在使用不法使用存储过程返回数据集,特做了修改 立即下载

使用 ODP.NET 访问 Oracle

作者: Robert P. Lipschutz 和 Gregg D. Harrington

现在 .NET 开发人员可利用 Oracle 的本地数据访问来改进应用程序的性能。

要想从 Oracle 所支持的企业应用程序获得预期的响应性能和高级数据库特性,应该选择 Oracle 专用的连接而不是一般的数据库连接。Java 开发人员长期以来一直可以选择使用 Oracle 提供的专用 API 连接到 Oracle 数据库,这些 API 扩展了 JDBC 并为开发人员利用如大型对象 (LOB) 和 Ref Cursor 这样的 Oracle 高级特性提供了一条途径。

2002 年 2 月,Microsoft 推出了 Visual Studio .NET 及其三种语言(C# .NET、Visual Basic .NET 和 C++ .NET)以及底层的 .NET 框架。Microsoft .NET 为建立企业级的桌面、Web 和 client/server 应用程序提供了一个面向对象的开发平台。不幸的是,使用这些 Microsoft 语言和 .NET 框架的开发人员并没有一个现成的、专用于 Oracle 的数据库连接选项。

针对这一问题,Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数据库访问 API。在本文中,我们将讨论 ODP.NET 的用法、特性和对性能的改善。我们发现使用 ODP.NET 确实具有一些显著的优势。

ODP.NET 的基本知识

我们在 Microsoft Visual Studio .NET 中使用专用于 Oracle 数据库连接的 ODP.NET,建立了一个简单的 C# 应用程序(名为 dejavu);完整的源代码位于 列表 1 和列表 2 中。这一应用程序及其附带的数据库将作为本文所有示例的一个基础。

数据库中的每条记录都包括一个员工的相关信息。这一应用程序使用带有四个字段的基本表,表 1 对此进行了概述。

您会发现使用 ODP.NET 进行连接或使用基本的 INSERT 和 SELECT 语句相对要容易些;这些任务与 JDBC 或 OLE DB .NET 同类产品非常相似。在编写 dejavu 的时侯,我们首先执行了一些基本步骤以便可以使用 ODP.NET:

 

  1. 安装 ODP.NET 软件。
  2. 在 Visual Studio 的 Solution Explorer 中,添加一个对 Oracle.DataAccess DLL 的引用。
  3. 在 C# 类中,通过在源代码文件的最上面使用子句(using Oracle.DataAccess.Client; 和 using Oracle.DataAccess.Types; )添加了两个命名空间(如果您正在使用 Visual Basic .NET 或其他与 .NET 兼容的语言,则添加命名空间的语法可能会略有不同)。

 

一旦可以使用 ODP.NET,就可以执行下面的步骤来完成一个基本的插入操作:

 

  1. 创建和打开一个数据库连接。
  2. 创建一个命令。
  3. 执行命令。

 

首先,创建和打开一个数据库连接:

 

OracleConnection dbConn = new OracleConnection(
	"Data Source=" + txtDataSource.Text + ";" + 
	"User Id=" + txtUsername.Text + ";" + 
	"Password=" + txtPassword.Text + ";");
dbConn.Open();

 

然后使用 OracleConnection object 建立对数据库的一个连接。每当创建该对象的一个实例,就要提供一个连接字符串。OracleConnection 对象使用此字符串定位到相应的 Oracle 数据库服务器,并进行认证。

在这个例子中,连接字符串有三个连接参数:Data Source、User Id 和 Password。由于 Oracle Data Provider 使用了 Oracle 调用接口 (OCI),因此 Data Source 将是 Oracle 客户端软件所用 tnsnames.ora 文件中的一个有效 TNS 名。User Id 是指定的 Data Source 的有效用户名。最后,Password 是与所提供的 User Id 相匹配的密码值。

然后,打开连接,方法是对 OracleConnection 对象调用 Open() 方法, 并创建一个 OracleCommand 对象(该对象与已创建的 OracleConnection 对象相关联):

 

OracleCommand cmd = new OracleCommand(
	"insert into dejavu_employee values " + 
	"(1, 'Gregg D. Harrington', empty_blob())", dbConn);

 

在创建 OracleCommand 对象的时侯,需要提供带有两个参数的构造符。第一个是希望执行的 SQL 命令;这可以是用字符串所写的任意有效的 SQL 语句。在这个例子中,准备在 DEJAVU_EMPLOYEE 表中插入一个员工。第二个参数是连接到数据库的 OracleConnection 对象。

最后,执行 OracleCommand 对象:

 

int rows = cmd.ExecuteNonQuery();
ShowInfo(rows + " where added to the 
database");

 

在这个例子中,要在数据库中插入一行数据,因此我们将使用 ExecuteNonQuery() 方法。在不需要查询返回任何行时(比如 SQL 的 INSERT、UPDATE 或 DELETE 语句)就可以使用这个方法(使用 ExecuteReader() 用于 SELECT 语句)。ExecuteNonQuery() 方法接收所构造的 SQL 语句,将其送到数据库执行,并返回操作涉及到的行数。

现在,让我们来读取刚刚插入到数据库中的记录并向用户显示相应的列名。将使用现有的连接和命令目标,而不是建立新的数据库连接。

要更改 SQL 语句,可根据想要执行的新的 SQL 语句更改 OracleCommand 对象的 CommandText 属性:

 

cmd.CommandText = "select * from dejavu_employee where " + 
"id = 1";

 

如果想要使用单一的数据库连接在单一的 OracleCommand 对象中执行多个 SQL 语句,这一技术就特别有用。

下面,执行该命令并读取结果:

 

OracleDataReader reader = cmd.ExecuteReader();
reader.Read();
ShowInfo("The selected user's name was " + 
	reader["name"].ToString());
dbConn.Close();

 

我们在此看到一个新对象,OracleDataReader。该对象用于读取一条或多条记录。在给出的示例中,由于我们是在主关键字列中查找一个特定值,因此只返回一条记录。 ExecuteReader() 返回一个包含生成的一条或多条记录的 OracleDataReader 对象。

一旦有了 OracleDataReader 对象,就可以获得想要的数据了 — 在这个例子中,就是姓名这一列。在开始创建 OracleDataReader 的时侯,该对象不是放置在第一条记录的位置,因此有必要在读取第一条记录之前,调用 Read() 方法。 如果之后还有相应的记录,则 Read()方法会移动到下一条记录并返回一个为真的布尔值。

下面,我们要使用 OracleDataReader 对象缺省的字符串数组属性检索姓名列的值,传递所要列的名称 — 在这个例子中,就是姓名。最后,我们另外通过对 OracleConnection 对象调用 Close() 方法关闭这个连接。

比较基本的 ODP.NET 类和与之相当的类

用于 ODP.NET 中的基本类与用于其他连接选项中的基本类非常相似。虽然方法名称和执行有时也会不太一样,但基本的逻辑都是一样的。表 2 列出了一些典型的数据库操作,以及 ODP.NET、OLE DB .NET 和 Oracle 瘦 JDBC 驱动器处理这些操作时用到的对象。

ODP.NET 高级特性

至此我们已经了解了一些基本知识,下面让我们来仔细了解使得 ODP.NET 如此强大的一些特性:对 LOB 和 Ref Cursors 的处理。

Oracle LOB、BLOB 和 Bfile。 Oracle LOB 用于存储各种大型的字符或二进制数据,包括图片和文本文档。ODP.NET 提供本地方法检索和管理 LOB,这样就改进了处理 LOB 的代码性能,并使得编写这一代码的过程对于开发人员来说变得更为简单。

ODP.NET 包含了 OracleBlob 和 OracleClob 对象。这些对象扩展了 System.IO.Stream 对象的功能。这些数据类型使得开发人员用较少的性能开销,便可实现 LOB 到数据库的简单读写。

为了展示 ODP.NET 处理 BLOB (二进制大对象)和 CLOB (字符型大对象)的能力,我们将逐步演示一个简单的示例。在这个例子中,我们将打开一个照片文件并将其写入到数据库中。对于这一过程的前两步(创建和打开一个数据库连接,并创建一个命令)使用上面例子所示的相同方式来完成。

下面,我们必须创建一个事务:

 

OracleTransaction trans = dbConn.BeginTransaction();

 

在更新某个 BLOB 的时侯,需要执行完一个事务中的所有操作以便维护数据的完整性(如果正要准备检索一个 BLOB 数据库对象,则不需要创建一个事务)。要创建一个本地事务,调用 OracleConnection 对象的 BeginTransaction() 方法。这样就返回了一个 OracleTransaction 对象,我们将该对象指定给一个变量以备以后使用。

现在,我们打开该记录并获得 OracleBlob 对象:

 

cmd.CommandText = "select * from dejavu_employee where " + 
	"id = 1 for update";

OracleDataReader reader = cmd.ExecuteReader();
reader.Read();
OracleBlob lob = reader.GetOracleBlob(2); // ordinal position of blob

 

我们检索 OracleBlob 对象,并将其注入照片文件中。首先,我们选择想要的记录 — 在这个例子中,就是 ID 号为 1 的员工记录。由于我们将更新这个 BLOB,所以数据库的行必须是锁定的。我们通过在 SELECT 语句中使用更新子句来执行这一操作。

下面,我们打开一个 OracleDataReader 并调用 Read() 方法移动到第一条记录。最后,我们从 OracleDataReader 中获得 OracleBlob 对象。这一操作使用 OracleDataReader.GetOracleLob() 方法来完成。

现在,我们就可以将照片放到服务器上了,如列表 3 所示。应用程序会提示用户输入想要上载到数据库中的文件名。对于这个任务,我们在 Visual Studio 表单设计器中创建的一个 OpenFileDialog 对象 (在我们的例子中就是 ofdPicture)。下面,我们用 System.IO.FileStream 对象打开文件,然后继续从 FileStream 对象中将数据复制到 OracleBlob 对象。后者使用一个 WHILE 循环通过 Read() 和 Write()方法来实现。

使用 OracleClob 对象和使用 OracleBlob 对象是非常相似的。在读取 CLOB 数据库对象时,可以使用 OracleClob 对象从数据库读取字符型数据。OracleClob 对象覆盖 Read() 方法,并向开发人员提供使用 CLOB 置入一个字符数组或字符串的方法。

ODP.NET 还提供一个和 OracleBlob 类似的对象,用于从 Oracle 数据库中读取 BFile 数据库。Bfile 是存储在数据库之外文件系统中的 LOB,对于存储特别大的文件非常有用。

Ref Cursor 和存储过程。可以通过存储过程打开 Ref Cursor,并通过一个输出参数将其传送到应用程序。

要更好地理解 Ref Cursor 在 ODP.NET 中的用法,可以迅速浏览列表 4 中的 PL/SQL 代码。这段代码根据输入参数 n_empid 和 n_empid2,从DEJAVU_EMPLOYEE 表中检索到两条记录。然后通过输出参数 io_cursor 和 io_cursor2 返回 Ref Cursor。

开发人员会发现使用 ODP.NET 编写 Ref Cursor 非常容易,因为他们可以使用游标的输出参数(如 io_cursor 和 io_cursor2),如同 OracleDataReaders 一样。要检索某个 Ref Cursor,需要首先打开一个数据库连接,如同第一个示例中所示。下面,我们要创建一个命令调用存储过程并传递必要的参数,如列表 5 所示。在这个列表中,我们使用一个已熟悉的对象(即OracleCommand)来调用存储过程并获得结果 Ref Cursor。但是,我们使用存储过程的输出参数,而不是使用 SQL 语句从数据库中获得记录。

让我们逐步演示一下列表 5 中的过程。首先,在第 1 行,我们创建一个新的 OracleCommand 对象。但是,我们是通过提供存储过程的名称来调用该存储过程,而不是使用包含 SQL 语句的一个字符串 — 在我们的例子中,就是 curspkg.open_two_cursor。

下面,在第 2 行,我们将 OracleCommand 对象指定为存储过程调用,而不是 SQL 语句调用。要指定这个命令是调用存储过程,必须正确地指定 OracleCommand 对象的 CommandType 的属性。 CommandType 属性有很多可接受的值,可以通过 CommandType 枚举对象访问这些值。在这个例子中,我们使用 CommandType.StoredProcedure。

第 3 行和第 4 行创建了两个必需的参数变量以便访问返回的 Ref Cursor。我们将使用这些变量从数据库的存储过程获得对 Ref Cursor 结果的引用。

第 5 行到第 8 行向 OracleCommand 对象添加四个必需的参数。我们为 cmd.Parameters.Add() 方法同一行中的两个 n_empid 参数创建 OracleParameter 对象。

OracleParameter 构造符接收两个参数。第一个是 PL/SQL存储过程参数名;这就意味着可以灵活地添加参数,而不是按照声明存储过程参数的顺序添加。第二个参数是 PL/SQL 存储过程参数(即 Value 属性)应该被解释成的数据类型; Value 参数的可接受类型位于 OracleDbType 枚举对象中。这两个构造符参数同时告诉 OracleParameter 和 OracleCommand 对象如何调用存储过程,以及如何解释从该存储过程返回的值。

接下来的步骤

下载 ODP.NET
/global/cn/tech/windows/odpnet

ODP.NET 示例代码
/global/cn/sample_code/tech/windows/odpnet

参加 ODP.NET iSeminar
oracle.com/iseminars
使用 Oracle Data Provider for .NET

在我们的示例中,我们向 OracleCommand 对象添加了四个 OracleParameter 对象。其中的两个是 n_empid 和 n_empid2 输入参数,这两个参数是 OracleDbType.Int64 类型,用于 open_two_cursor 存储过程。我们还需要使用 OracleParameter 对象的 Value 属性,将参数的值分别设为 1 和 2。

第三个和第四个参数是 open_two_cursor 存储过程的输出参数。在这个例子中,就是 io_cursor 和 io_cursor2。对于 io_cursor 参数,我们并不向存储过程传递某个值,而是希望存储过程能返回一个 Ref Cursor。要处理这一步,我们添加一个 OracleParameter 对象作为OracleDbType.RefCursor 类型。要让 OracleCommand 对象知道这是一个输出参数,需要将 OracleParameter 对象的 Direction 属性设置为 ParameterDirection.Output。

下面,执行存储过程并检索结果,如列表 6 所示。在该列表的第 1 行,我们对 OracleCommand 对象调用 ExecuteNonQuery() 方法。该方法调用存储过程并将结果读回到正确的 OracleParameter 对象。

在第 2 行和第 3 行,我们将返回值抛入到 OracleRefCursor 对象。在 ODP.NET 执行回传某个值的存储过程时,会将那些值存储在与之相关联的 OracleParameter 对象的 Value 属性中。

从第 4 行到第 9 行,我们创建 OracleDataReader 对象,将它们设置为 Ref Cursor 结果,调用 Read() 方法移动到第一个记录,并从 OracleDataReader 对象中检索姓名列。

OracleDataReader 对象还包含了一个名为 NextResult() 的方法,该方法可以与方法 ExecuteReader() 联合使用,顺序地迭代来自存储过程的所有 Ref Cursor 结果。利用 NextResult() 方法,我们仅需要使用一个 OracleDataReader 对象来访问所有的 Ref Cursor。然而,这样做会限制我们顺序地访问 Ref Cursor。访问多个 Ref Cursor 结果所使用的方法将取决于应用程序的需要。

结论

Oracle Data Provider for .NET提供一个易于使用的、强大的 API,并且与 OLE DB .NET 相比,性能得到巨大的改善。如果希望在 .NET 框架中开发应用程序访问新的和现有的 Oracle 数据库,那么熟悉这一技术会使您的工作更轻松。

Robert P. Lipschutz (rob@thing7.com) 是 Thing 7 的总裁,该公司擅长编写技术白皮书和设计原型,而 Gregg D. Harrington (gregg@thing7.com) 是 Thing 7 的高级设计师。

Table 1:DEJAVU_EMPLOYEE table

 

字段类型目的
IDNUMBER(10)保留员工的 ID(这是该数据库的主关键字)
NAMEVARCHAR2(32)保留员工的姓名
PHOTOBLOB保留员工的照片
BIGNUMBERNUMBER(38,37)保留一个高精度数字

Table 2:比较几种常用 Oracle 连接的
基本选项命令

 

操作ODP.NETOLE DB .NETORACLE 瘦 JDBC 驱动器
连接到OracleConnectionOleDbConnectionOracleConnection database
创建 SQLOracleCommandOleDbCommand OracleStatement commands
读取数据OracleDataReaderOleDbDataReaderOracleResultSet

Microsoft's .NET Framework Data Provider for Oracle

Microsoft 也发布了一个 Oracle 专用的数据库驱动器,名为 .NET Framework Data Provider for Oracle。由于针对 .NET 的 Oracle 数据库的连接极其重要,因此 Oracle 和 Microsoft 都来处理这一问题就不足为奇了。正如 Oracle 的 ODP.NET 一样,Microsoft 的产品比 OLE DB .NET提供更多 Oracle 专用的功能和更好的性能。然而,Microsoft 的提供程序总得来说还是不如 ODP.NET 的功能多。

例如,ODP.NET API 可以支持事务保存点、本地 Ref Cursor 数据类型、代理服务器用户认证和全球化特性。Microsoft 的解决方案提供了一个 OracleLob 对象,该对象以相同的方式控制所有的 Oracle LOB 数据库。然而,ODP.NET 对 Oracle BLOB 和 CLOB 数据库对象都提供特定的对象。这就意味着 ODP.NET 对这些 Oracle 数据类型提供更好的支持。例如,OracleClob 对象可覆盖 read 方法置入一组字符数组。这一特性在处理 Unicode 和其他多字节字符时特别有用。

Microsoft 的解决方案和 ODP.NET 都比 OLE DB .NET 提供更好的数据库访问性能,最显著的是写操作和 LOB 操作。Microsoft 计划将其新版本的 .NET Framework Data Provider for Oracle 包含在 Visual Studio .NET 的下一个发布版中。

避坑指南:PyCINRAD处理CINRAD雷达数据时遇到的5个典型报错及解决方案 本文针对使用PyCINRAD库处理CINRAD雷达基数据时常见的5个典型报错,提供了详细的解决方案。内容涵盖环境配置、数据读取、PPI可视化及性能优化等核心环节,重点解决了版本兼容性、数据异常处理和中文乱码等实际问题,帮助用户高效处理雷达基数据并生成准确的PPI图像。 阅读详情

相关推荐

从原理图到PCB:Cadence Allegro 17.4网表同步全流程详解(含第三方网表配置)

本文详细解析了Cadence Allegro 17.4中从Orcad原理图到PCB布局的网表同步全流程。核心内容包括标准的第一方网表同步步骤,以及针对第三方网表导入时关键的封装库路径配置方法,并提供了常见同步错误的排查思路,帮助工程师高效、准确地完成设计数据传递,确保PCB设计顺利开局。

salt9的博客 654

(原) ODP.NET 演示通过存储过程的参数获取OracleClob数据

usingSystem; usingSystem.Data; usingSystem.Text; usingOracle.DataAccess.Client; usingOracle.DataAccess.Types; namespaceSample33 { //演示通过存储过程的参数获取OracleClob数据 classProgram ...

weixin_30294021的博客 172

Plant Simulation 实战指南:从二次分配问题到优化布局设计

本文是一份Plant Simulation实战指南,详细讲解了如何利用该仿真软件解决工厂布局中的二次分配问题。通过从数据准备、模型搭建到集成遗传算法进行自动化优化的完整流程,帮助工程师在数字孪生环境中高效寻找最优设备布局方案,从而显著降低物流成本,提升生产效率。

i1j2k的博客 564

使用ODP.Net 可以实现.Net 程序以SYSDBA 身份访问数据库

Oracle ODP.NET数据库访问连接字符串 Connection String Attribute 默认值 描述 Connection Lifetime 0 Maximum life time (in seconds) of the connection 当数据库连接被返回到连接池中时,它的创建时间将与当前时间比较,如果超过了 Conn...

weixin_33895657的博客 198

可视化大屏系列(5):设备状态面板与数据分析仪表盘

在这篇文章中,我们将重点讨论如何通过智能化手段提升工地设备的管理效率与维护质量。随着智能工地系统的不断发展,设备监控与维护管理变得尤为重要。本篇将从 设备状态实时监控、自动化维护提醒、设备管理与维修记录 三个方面入手,展示如何通过 Vue3 和 ECharts 构建一个智能化的设备管理平台,实时采集和展示设备运行状态、及时生成维护提醒并记录维修历史,以提高设备的使用效率与安全性。我们还将结合实际代码示例,详细讲解如何实现这些功能,帮助你在智能工地项目中实现设备管理的智能化、数字化和自动化。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 3365

大陆毫米波雷达ARS408-21xx实战:从零搭建ROS环境下的目标检测与可视化

本文详细介绍了大陆毫米波雷达ARS408-21xx在ROS环境下的实战部署全流程。从硬件连接、CAN总线配置,到ROS驱动节点开发、CAN报文解析,再到RViz三维可视化实现,提供了完整的代码示例与调试技巧,帮助开发者快速搭建毫米波雷达目标检测与可视化系统。

open4的博客 633

ODP.NET调用存储需要使用事务

今天发生在用ODP.NET调整一个存储过程时发生了两个奇怪的错误。 ORA-08103: object no longer exists ora-01410: invalid rowid 网上都说是索引块有错误什么的,我索引也重建,表也重建了,但还是不行。 奇怪的是我直接测试存储过程是有结果的。 后来发现是存储过程中使用了临时表,而我在代码中又没有使用事务,当我加上事...

weixin_30245867的博客 313

绑定压力的计算方法

压强的公式为P=F/S,其中P为ACF要求的本压压强范围,S为受压面积,F为本压压头施加的力。绑定参数需要按线体按压头进行DOE确认,并使用DOE确认好的参数按压头重新绑定标识好送ACF厂商实测固化率、粒子变形的情况,避免绑定参数导致的异常,在绑定参数的设定过程中温度和时间可以使用仪器实测但绑定的压力则需要换算。工程上绑定压力换算的原则是:1、FPC属于柔性物料,柔性物料的受压面积按FPC绑定的受压面积=FPC绑定的长度。一、工程上FOG FPC本压压力换算(柔性材料以挤压的接触面积=受力面积)F=P。

weixin_53757859的博客 1533

使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解

1,什么是ODF .NE,?就是Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数据访问 API 。 详细解说 http://www.oracle.com/technetwork/cn/testcontent/o23odp-084525-zhs.html 对于官方的代码,已不存在...

weixin_34111790的博客 435

解决UE5像素流三大痛点:鼠标锁定/双光标/自动播放(附app.js魔改指南)

本文针对UE5像素流服务在实际应用中常见的鼠标锁定、双光标和自动播放三大交互痛点,提供了深入的技术分析和解决方案。通过详细解析app.js源码,指导开发者如何修改控制方案、修复光标显示以及实现静音自动播放,旨在提升Pixel Streaming应用的用户体验与专业度。

weixin_28025327的博客 382

2、Minikube安装Ingress

文章目录前言一、Ingress安装二、Ingress Demo1.创建一个pod和service2.部署ingress3.添加minikube域名映射三、遇到的坑 前言 上篇介绍了Minikube的安装,本篇介绍一下如何在Minikube中安装Ingress。 一、Ingress安装 Ingress安装很简单,Minikube里面带了Ingress附件。 安装Ingress minikube addons enable ingress 禁用Ingress minikube addons disa

star_apple的博客 3071

.net中使用ODP.net访问Oracle数据库(无客户端部署方法)

ODP.net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用。 以下内容转载自:http://blog.ywxyn.com/index.php/archives/326 由于微软在.net framework4中会将System.Data.OracleClient.dll depreca

rrrrssss00的专栏 4万+

2025年数学建模国赛高教社杯A题、B题、C题、D题、E题详细思路和代码 模型||插值与拟合

核心思想:构造一个精确通过所有已知离散数据点(xi, yi)的函数y = f(x),并以此函数来估算或预测未知点的值。基本假设:我们认为已知的数据点是100%精确、无误差的(或者误差可忽略不计),比如理论计算值、高精度仪器测量值等。我们的目标是“还原”或“重建”出点与点之间的真实函数关系。关键特征精确性:曲线或曲面必须穿过每一个样本点。局部性:插值结果严重依赖于局部数据点的分布和数值。用途:用于“补全”数据、填充缺失值、进行函数近似等。常见方法多项式插值:拉格朗日插值、牛顿插值。

2201_76125261的博客 802

使用OracleClient,OLEDB,ODBC,Visual Studio,ODP.NET 来连接 Oracle访问数据库

---下面是OracleClient 下面也要介绍的是通过 System.Data.OracleClient 来完成 ASP.NET 页面访问 Oracle 数据库, 其实呢,还是比较简单的, 首先介绍一下环境吧, 我机器装的是 Oracle 10g R2 的版本, 要完成 ASP.NET 访问 Oracle 事实上,对 Oracle 还是有一些设置的, 看下面的一个截图里面的两...

weixin_30639719的博客 216

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在开发框架中扩展微软企业库,支持使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库

在前面随笔《在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动》中介绍了在代码生成工具中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,如果我们在框架应用中需要使用这个如何处理了...

爱无止 397

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

使用OracleClient,OLEDB,ODBC,Visual Studio,ODP.NET 来连接 Oracle访问数据库

下面也要介绍的是通过 System.Data.OracleClient 来完成 ASP.NET 页面访问 Oracle 数据库, 其实呢,还是比较简单的, 首先介绍一下环境吧, 我机器装的是 Oracle 10g R2 的版本, 要完成 ASP.NET 访问 Oracle 事实上,对 Oracle 还是有一些设置的, 看下面的一个截图里面的两个文件吧

xwnxwn的专栏 1539

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

使用 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 应用程序会方便很多的, 还是提

Prostones的专栏 1030
上一篇: Oracle Data Provider for .NET
下一篇: odp使用笔记
leaf829
博客等级 码龄21年 7粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值