转:ado.net

随着 Microsoft 的 .NET 框架的逐渐流行,许多开发人员迫切想了解关于将 .NET 应用程序与 Oracle 集成的最好的方式的信息 — 不仅在基本的连通性方面,还包括与使用 Visual Studio.NET (VS.NET) 进行有效的应用程序开发的关系。

  在本文中,我将说明构建使用 Oracle 数据库的 .NET 应用程序所涉及到的基本但不可或缺的过程,包括:
  • 如何添加工程引用,以在您的 .NET 工程中支持 Oracle 类
  • 如何创建 Oracle 数据库连接字符串
  • 如何使用 Connection、Command 和 DataReader 对象。
  您将有机会应用您在三个上机操作实践中学到的内容,难度范围从比较容易到更复杂。

  .NET Data Provider

  除了基本的 Oracle 客户端连通性软件,.NET 应用程序还需要使用称为managed data provider(其中 "managed" 指的是代码由 .NET 框架管理)的工具。 数据供应程序是 .NET 应用程序代码和 Oracle 客户端连通性软件之间的层。 在几乎所有情况下,最优的性能都是通过使用为特定数据库平台优化了的供应程序而不是一般的 .NET OLE DB 数据供应程序实现的。

  Oracle、Microsoft 和第三方供应商都提供了针对 Oracle 产品进行了优化的数据供应程序。 Oracle 和 Microsoft 免费提供其 Oracle 数据供应程序。 (Microsoft 为 .NET 框架的 1.1 版提供的供应程序包含在该框架中,不需要单独下载或安装。) 一些第三方数据供应程序支持 Oracle 的较早的版本,或者不需要安装 Oracle 客户端软件。 在本文中,我们假设使用 Oracle Data Provider for .NET (ODP.NET),并单独提供下载。

  当安装了 ODP.NET 和所有要求的 Oracle 客户端连通性软件时,就可以开始使用 Visual Studio.NET 进行应用程序开发了。 在开始开发前,请先确认客户端连通性。 如果您在 VS.NET 所在的计算机上使用 SQL*Plus 能够与 Oracle 连接,那么证明您已经正确地安装和配置了 Oracle 客户端软件。

  如果您刚接触 Oracle,那么请参阅Oracle Data Provider for .NET 开发人员指南 10g 版本 1 (10.1)中的“与 Oracle 数据库连接”部分,以了解 ODP.NET 的背景信息,或参阅Oracle 数据库管理员指南 10g 版本 1 (10.1),以了解关于管理 Oracle 数据库的通用信息。 您还可以查阅“使用 ODP.NET 与 Oracle 数据库连接”示例代码“方法”文档。

  在 Visual Studio.NET 中创建工程

  在启动 VS.NET 之后,第一个任务是创建一个工程。 您可以单击New Project按钮或选择File |New |Project...(如下所示)。
图 1
图 1: 在 Visual Studio.NET 中创建一个新工程

  出现一个New Project对话框。 在对话框左侧的Project Types下,选择您的编程语言。 在这个例子中,我们选择 VB.NET。 在右侧的Templates下,选择一个工程模板。 为简单起见,这里选择 Windows Application。

图 2
图 2: 使用New Project对话框

  您将需要为工程(我们使用 OtnWinApp)和解决方案(我们使用 OtnSamples)指定有意义的名称。 一个解决方案包含一个或多个工程。 当一个解决方案仅包含一个工程时,许多人对二者使用相同的名称。
  添加引用

  因为我们的工程必须与 Oracle 数据库连接,因此必须添加一个到包含我们选择的数据供应程序的 dll 的引用。 在 Solution Explorer 内,选择 References 节点,右键单击并选择Add Reference。 或者,您可以转至菜单栏并选择Project,然后选择AddReference。

图 3
图 3: 添加引用

  出现Add Reference对话框。

图 4
图 4: 选择 ODP.NET 管理的数据供应程序

  从列表中选择 Oracle.DataAccess.dll,然后单击Select按钮,最后单击OK按钮,使您的工程能够找到 ODP.NET 数据供应程序。

图 5
图 5: 选择 Oracle Managed Provider 之后的解决方案浏览器

  VB.NET/C# 语句

  在添加引用之后,标准的做法是要添加 VB.NET Imports 语句、C# using 语句或 J# import 语句。 从技术上说这些语句不是必要的,但是使用它们可以让您不需用冗长且完整名称来引用数据库对象。

  按照惯例,这些语句出现在代码文件的顶部或顶部附近,在命名空间或类声明之前。
Imports System.Data              ' VB.NET
Imports Oracle.DataAccess.Client ' ODP.NET Oracle managed provider
using System.Data; // C#
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
import System.Data.*; // J#
import Oracle.DataAccess.Client; // ODP.NET Oracle managed provider


  连接字符串和对象

  Oracle 连接字符串和 Oracle 名称解析是不可分的。 假定我们在 tnsnames.ora 文件中定义了一个数据库别名 OraDb,如下:
OraDb=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=ORCL)
)
)
  要使用上面所述的在 tnsnames.ora 文件中定义的 OraDb 别名,您需要使用以下语法:
Dim oradb As String = "Data Source=OraDb;User Id=scott;Password=tiger;" ' VB.NET
string radb = "Data Source=OraDb;User Id=scott;Password=tiger;"; // C#
  不过,您可以修改连接字符串,这样就不需用 tnsnames.ora 文件。 只需用在 tnsnames.ora 文件中定义别名的语句替换别名即可。
' VB.NET
Dim oradb As String = "Data Source=(DESCRIPTION=" _
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" _
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
+ "User Id=scott;Password=tiger;"
string radb = "Data Source=(DESCRIPTION=" // C#
+ "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))"
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));"
+ "User Id=scott;Password=tiger;";
  正如您在上面看到的那样,用户名和口令是以不加密的文本形式嵌入到连接字符串中的。 这是创建连接字符串的最简单的方法。然而,从安全的角度而言不加密文本的方法是不可取的。 而且,您需要了解编译的 .NET 应用程序代码仅比不加密文本形式的源代码文件稍微安全一点。可以非常简便的反编译 .NET dll 和 exe 文件,进而查看原始的不加密文本形式的内容。(加密实际上是正确的解决方案,但这个主题与我们这里的讨论相差太远。)

  接下来,您必须从连接类中完成一个连接对象的实例化。 连接字符串必须与连接对象关联。
Dim conn As New OracleConnection(oradb) ' VB.NET
OracleConnection conn = new OracleConnection(oradb); // C#
  注意,通过将连接字符串传递给连接对象的构造器(该构造器进行了重载),连接字符串与连接对象建立关联。 构造函数的其他重载允许以下这些替代的语法:
Dim conn As New OracleConnection() ' VB.NET
conn.ConnectionString = oradb
OracleConnection conn = new OracleConnection(); // C#
conn.ConnectionString = oradb;
  在连接字符串与连接对象建立关联之后,使用 Open 方法来创建实际的连接。
conn.Open() ' VB.NET
conn.Open(); // C#

  我们将在稍后介绍错误处理。

  Command 对象

  Command 对象用于指定执行的 SQL 命令文本 — SQL 字符串或存储过程。 类似于 Connection 对象,它必须从完成其类的实例化,并且它拥有一个重载的构造函数。
Dim sql As String = "select dname from dept where deptno = 10" ' VB.NET
Dim cmd As New OracleCommand(sql, conn)
cmd.CommandType = CommandType.Text
string sql = "select dname from dept where deptno = 10"; // C#
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;

  不同的重载,语法的结构稍微有点不同。 Command 对象有用于执行命令文本的方法。 不同的方法适用于不同类型的 SQL 命令。
 检索标量值

  从数据库中检索数据可以通过实例化一个 DataReader 对象并使用 ExecuteReader 方法(它返回一个 OracleDataReader 对象)来实现。 通过将列名称或以零为基数的列序号传递给项属性 B.NET 开发人员可以访问返回的数据。另一种选择是使用存取程序类型方法来返回列数据。
Dim dr As racleDataReader = cmd.ExecuteReader() ' VB.NET
dr.Read()
Label1.Text = dr.Item("dname") ' retrieve by column name
Label1.Text = dr.Item(0) ' retrieve the first column in the select list
Label1.Text = dr.GetString(0) ' retrieve the first column in the select list

  C# 开发人员必须使用存取器方法来检索数据。 有适当类型的存取程序用于返回 .NET 本地数据类型,其他的存取程序用于返回本地 Oracle 数据类型。 以零为基数的序号被传递给存取程序,以指定返回哪一列。
OracleDataReader dr = cmd.ExecuteReader(); // C#
dr.Read();
label1.Text = dr.GetString(0); // C# retrieve the first column in the select list

  在这个简化的例子中,dname 的返回值是一个字符串,它用来设置标签控件的文本的属性值(也是一个字符串)。 但如果检索的是 deptno,而不是字符串,那么将出现数据类型不匹配的情况。 当源数据类型与目标数据类型不匹配时,.NET 运行时将尝试隐式地转换数据类型。有时数据类型不兼容,则隐式转换将失败,并跳出一个异常警报。 但即使可以进行隐式转换,使用显式数据类型转换仍比用隐式数据类型转换好。

  到整型的显式转换显示如下:
Label1.Text = CStr(dr.Item("deptno")) ' VB.NET integer to string cast

  在隐式转换上,C# 的容错能力不如 VB.NET。 您必须自己执行显式转换:
string deptno = dr.GetInt16("deptno").ToString(); // C#

  您可以显式地转换标量值以及数组。

  关闭并清除

  可以调用连接对象的 Close 方法或 Dispose 方法来关闭到数据库的连接。 Dispose 方法调用 Close 方法。
conn.Close() ' VB.NET
conn.Dispose() ' VB.NET
conn.Close(); // C#
conn.Dispose(); // C#

  作为可选项,C# 提供了一种在连接超出范围时自动清除连接的特殊语法。 使用 using 关键字可启用这一特性。
using (OracleConnection conn = new OracleConnection(oradb))
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "select dname from dept where deptno = 10";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
label1.Text = dr.GetString(0);
}

  您可以试验在上机操作 1(从数据库中检索数据)和上机操作 2(增加交互性)中学到的一些概念。
 错误处理

  Try-Catch-Finally 结构的错误处理是 .NET 语言的一部分。 下面是使用 Try-Catch-Finally 语法的一个相对最小的例子:
Dim conn As New OracleConnection(oradb) ' VB.NET
Try
conn.Open()
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandText = "select dname from dept where deptno = " + TextBox1.Text
cmd.CommandType = CommandType.Text
If dr.Read() Then
Label1.Text = dr.Item("dname") ' or use dr.Item(0)
End If
Catch ex As Exception ' catches any error
MessageBox.Show(ex.Message.ToString())
Finally
conn.Dispose()
End Try
OracleConnection conn = new OracleConnection(oradb); // C#
try
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "select dname from dept where deptno = " + textBox1.Text;
cmd.CommandType = CommandType.Text;
if (dr.Read()) // C#
{
label1.Text = dr.GetString(0);
}
}
catch (Exception ex) // catches any error
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
conn.Dispose();
}
  虽然这种方法将适当地捕获尝试从数据库中获取数据时发生的任何错误,但这种方法对用户却不友好。 例如,看看下面这条在数据库不可用时显示的消息。

图 6
图 6: 捕获到一个 ORA-12545 错误,并向用户显示。

  Oracle DBA 或开发人员很清楚 ORA-12545 的意义,但是最终用户不清楚。 一种更好的解决方案是添加一条额外的 Catch 语句来捕获最常见的数据库错误并显示对用户友好的消息。
Catch ex As OracleException ' catches only Oracle errors
If InStr(1, ex.Message.ToString(), "ORA-1:", CompareMethod.Text) Then
MessageBox.Show("Error attempting to insert duplicate data.")
ElseIf InStr(1, ex.Message.ToString(), "ORA-12545:", CompareMethod.Text) Then
MessageBox.Show("The database is unavailable.")
Else
MessageBox.Show("Database error: " + ex.Message.ToString())
End If
Catch ex As Exception ' catches any error
MessageBox.Show(ex.Message.ToString())
catch (OracleException ex) // catches only Oracle errors
{
switch (ex.Number)
{
case 1:
MessageBox.Show("Error attempting to insert duplicate data.");
break;
case 12545:
MessageBox.Show("The database is unavailable.");
break;
default:
MessageBox.Show("Database error:" + ex.Message.ToString());
break;
}
}
catch (Exception ex) // catches any error
{
MessageBox.Show(ex.Message.ToString());
}
  注意上面的代码示例中的两条 Catch 语句。 如果没有捕获到任何 Oracle 错误,那么将跳过第一条 Catch 语句分支,让第二条 Catch 语句来捕获其他任何类型的错误。 在代码中,应该根据从特殊到一般的顺序对 Catch 语句排序。在实施了对用户友好的异常处理代码之后,ORA-12545 错误消息显示如下:

图 7
图 7: 针对 ORA-12545 错误的对用户友好的消息

  Finally 代码将始终执行,而无论错误是否发生。 通过在 Finally 代码块中加入连接对象的 Close 或 Dispose 方法调用,在执行了 Try-Catch-Finally 代码段之后,数据库连接将始终关闭。 试图关闭没有打开的数据库连接不会导致错误。例如,如果数据库不可用,数据库连接没有打开,那么 Finally 代码块将试图关闭不存在的连接。 执行多余的 Close 或 Dispose 是无效的。 只需将一条 Close 或 Dispose 方法放到 Finally 代码块中,将保证关闭连接。
 利用 DataReader 检索多个值

  到目前为止,我们的示例仅说明了如何检索单个值。 DataReader 可以检索多列和多行的值。 首先进行多行、单列的查询:
select deptno, dname, loc from dept where deptno = 10
  要获取列的值,可以使用以零为基数的序号或列名。 序号与查询中的顺序相关。 因而,可以在 VB.NET 中通过使用 dr.Item(2) 或 dr.Item("loc") 来查询 loc 列的值。

  下面是将 dname 和来自上一查询的 loc 列串连起来的代码段:
Label1.Text = "The " + dr.Item(1) + " department is in " + dr.Item("loc") ' VB.NET
Label1.Text = "The " + dr.GetString(1) + " department is in " + dr.GetString(2); // C#
  现在我们进行返回多行的查询:
select deptno, dname, loc from dept
  要处理从 DataReader 中返回的多行,需要某种类型的循环结构。 此外,需要一个可以显示多行的控件。 DataReader 是一个仅正向的只读游标,因此不能将其与可更新或完全可滚动的控件(如 Windows Forms DataGrid 控件)捆绑在一起。 DataReader 与 ListBox 控件兼容,如以下代码段所示:
While dr.Read() ' VB.NET
ListBox1.Items.Add("The " + dr.Item(1) + " department is in " + dr.Item("loc")) End While
while (dr.Read()) // C#
{
listBox1.Items.Add("The " + dr.GetString(1) + " department is in " + dr.GetString(2);
}
  上机操作 3(利用 DataReader 检索多列和多行)重点介绍了这些概念中的一部分。

  总结

  本文向您介绍了使用 VS.NET 编程语言访问 Oracle 数据库的过程。 您现在应该能够连接数据库并检索多列和多行。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12122734/viewspace-520906/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12122734/viewspace-520906/

ADO.NET 技术 ADO.NET 技术 前言:    作为.NET框架最重要的组件之一,ADO.NET扮演着应用程序与数据交互的重要的角 色。本文将从宏观的角度来探讨ADO.NET,和大家一起了解ADO.NET来龙去脉以及ADO.NET 的主要组成部分。 一、ADO.NET是什么?   简单的说,ADO.NET是一组允许.NET开发人员使用 阅读详情

相关推荐

DAO 、ADO和ADO.NET

1.什么是DAO(Data Access Objects) DAO数据访问对象是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许开发者通过ODBC(Open Database Connectivity,是微软提出数据库访问接口标准)连接到Access数据库,对其进行访问。 2.什么是ADO(ActiveX Data Objects) ADO是一项微软的技术,是A

shadowyelling的专栏 1654

Unity3D实战:用EasyAR4.0稀疏空间地图打造AR导航应用(附完整代码)

本文详细介绍了如何使用Unity3D和EasyAR4.0的SparseSpatialMap功能构建AR导航应用。通过稀疏空间地图技术,开发者可以创建室内导航系统,解决传统GPS在室内环境中的局限性。文章包含完整代码示例,涵盖环境配置、地图构建、导航实现及性能优化等关键步骤,助力开发者快速掌握AR导航开发技巧。

t8u9v0的博客 1197

转:ADO.NET连接字符串

名称 ADO.NET连接字符串 说明 ADO.NET连接字符串:SQL Server,SQL Server 2005,ACCESS,Oracle,MySQL,Interbase,IBM DB2,Sybase,Informix,Ingres,Mimer SQL,Lightbase,PostgreSQL,Paradox,DNS,Fir...

weixin_30954607的博客 89

晶圆表面缺陷检测现状概述

凹坑,凸起,尖角,沟槽),使用光束对晶圆进行照射,收集反射光和散射光信息进行缺陷判断,进一步可分为无图案晶圆表面检测和宏观缺陷检测设备。KLA使用SR-DUV光,检测精度在10nm以下。扫描电子显微(电子束和晶圆表面产生二次电子,X射线等)获取高分辨率的图像,然后用图像处理表面缺陷(凹坑,凸起,尖角,沟槽等)表面容貌和材料信息,分辨率可达5-10nm。晶圆表面缺陷检测设备主要检测晶圆外观呈现出来的缺陷,损伤、毛刺等缺陷,主要设备供应商KLA,AMAT,日立等,其中KLA在晶圆表面检测设备占有市场52%左右。

qq_36786800的博客 1万+

IDEA 导入 jbolt项目(实验室非公开项目)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录准备一、准备数据库二、IDEA导入jbolt项目 准备 在实验室群文件中下载jbolt.zip和mysql.sql两个文件 将其解压到自己的目录下 一、准备数据库 打开Navicat新建一个jbolt数据库(字符集为utf8) 导入mysql.sql文件 数据库导入完毕 二、IDEA导入jbolt项目 点击打开一个项目 选择jbolt文件夹 以Maven形式打开 打开pom.xml 在里面添加jetty-server依赖

weixin_44094842的博客 976

转ADO.NET:通向未来之桥 作者: 仙人掌工作室

在Web跨入编程时代之前,对于大多数IT管理者和顾问来说,数据访问只是一个相对而言的问题;所有要用到的数据都必须自己准备好。人们主要关心的问题是选择性能/价格比最好的数据库服务器,系统涉及的所有模块必须和服务器兼容。客户机/服务器应用是这种两层模型最典型的范例。 随着Web交互性的日益提高和应用的日益广泛,对于第三层——中间层的需求也越来越突出。中间层是一个逻辑层,数据访问组件通常就在这一层上。数

505

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 616

转摘:ADO.NET 学习笔记

12//Overview3Data-->DataReader-->DataProvider-->DataSet4DataProvider:Connection,Command,DataAdapter5DataSet:DataRelationCollection,6DataTablecollection(including...

weixin_30815427的博客 107

【批处理脚本】-0.1-如何运行批处理bat文件

如何运行批处理bat文件

「汽车电子助手」的博客 1586

实战!C#整合YOLO+Halcon做玻璃瓶口缺陷检测:裂纹识别+尺寸测量一步到位(附DLL交互代码)

AI擅长语义识别(裂纹、缺陷),传统机器视觉擅长精密测量(尺寸、位置),C#做整合层,才能满足工业生产的“精度+效率+稳定性”要求。这套方案不只是玻璃瓶检测能用,改改模型和测量逻辑,还能用到瓶盖缺陷检测、饮料瓶液位检测等场景。如果你们厂也有类似的质检痛点,评论区留个言,我帮你看看怎么调整算法参数。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 871

转:ASP.NET AJAX+WCF+ADO.NET Entity 开发实例

ASP.NET AJAX,WCF,ADO.NET Entity 开发实例 开发环境:Windows server 2008 Enterprise,Microsoft Visual Studio 2008 SP1,.NET Framework 3.5 SP1,Microsoft SQL Server 2008 开发架构: ASP.NET AJAX,WCF,ADO.NET Entity Fr...

weixin_30348519的博客 97

使用再生龙备份还原liunx系统(精确每一步)

再生龙镜像可自行到官网下载(ISO/ZIP格式均可),然后使用tuxboot烧录工具制作启动盘,另外准备一个U盘用来存储备份的镜像文件,即再生龙盘和存储盘是两个分开的。当然也可以用分区工具把同一个硬盘分区来使用,比较方便,先学会基本的吧,只是告诉有个捷径,省个U盘。

米可的博客! 8381

跨时代的改进:ADO.NET简介(附图) (转)

跨时代的改进:ADO.NET简介(附图) (转)[@more@]跨时代的改进:ado.NET简介(附图)   ADO.NET是对microsoft ActiveX Data objects (ADO)一个跨时代的改进,它提供了...

csd3176的博客 72

零基础做AI漫剧:Kimi K2.5写本 + Flux生图 + Seedance 2.0动效的保姆级教程

很多零基础小伙伴想做AI漫剧,却被“写剧本、画分镜、做动效”三大难题劝退——不会写剧情、不会画插画、不会做动态,觉得门槛太高。其实不用慌!今天就给大家带来保姆级教程,全程用Kimi K2.5(写剧本)、Flux(生分镜图)、Seedance 2.0(做动效)三个工具,不用专业技能,不用手动绘画,零基础也能在1小时内做出1分钟完整AI漫剧,全程步骤拆解、示例齐全,跟着做就能出片!

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3043

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

转:事务的使用(ADO.NET和SQL SERVER)

  最近几天,在做项目的过程中,写了一些存储过程用来处理一些业务逻辑,发现在数据库中只有很少几个存储过程,而我这边就一个很小的模块都要涉及到几张表的操作,写存储过程是最方便的,而且效率也是最高的。于是,我问了一下这边的负责人,他们之前开发的那些模块,怎么没有写几个存储过程?而负责人的给我的回答是,以后别人来维护,出现问题时,跟踪调试写存储过程不好调试。我不敢苟同这种说法。   既然项...

weixin_30345055的博客 74

IMSL CNL 7.0.0 (x86-64)Crack

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

LINQ to SQL(LINQ2SQL) vs. ADO.NET Entity 【转 作者:ccBoy】

晚上抽空看了Mtaulty有关Linq to SQL的N集连播,大呼过瘾,看完才有不少感概,国外DPE的这些Evangelist真是在传教解惑,如果换成中文的,哪估计能普及更多中国的.NET 爱好者,想想几年前自己在DPE的时候,天天有数字的压力,每每像个小弟一样跟着Sales老大跑前跑后,是明白了很多的销售的道理,当时感觉自己像蜻蜓点水,不过话也说回来,那时候还没有这么多的方式,有是播又是拍...

weixin_30326515的博客 114

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

假人有限元模型

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

增补透视一文:将ADO.NET或Webservice返回的DataSet转换成ADODB.Recordset (转)

增补透视一文:将ADO.NET或Webservice返回的DataSet转换成ADODB.Recordset (转)[@more@]增补透视一文:将ado.NET或webservice返回的DataSet转换成ADOdb.Rec...

csd3176的博客 137

吃透 ADO.NET 核心对象,轻松搞定数据库操作

本文系统介绍了ADO.NET的核心对象及其协作流程,包括Connection(连接器)、Command(指令官)、DataAdapter(搬运工)、DataSet(内存数据库副本)和DataReader(数据阅读器)的功能与使用方法。通过一个完整的分页查询实战示例,展示了ADO.NET的具体应用,包含参数化SQL、DataSet查询和DataTable转实体等关键操作。文章还提供了优化技巧,如使用配置文件管理连接字符串、封装工具类和参数化查询等。作为ORM框架的底层基础,掌握ADO.NET能帮助开发者深入理

bugcome的博客 921

[转]ADO.NET 2.0 - 如何将 DataView 转换成一个 DataTable

原文地址:http://www.cnblogs.com/liminzhang/archive/2006/11/23/569880.html ADO.NET 2.0 - 如何将 DataView 转换成一个 DataTable 一般来说,在我们从 SQL Server 等后端数据来源提取出所需的数据记录之后,会将这些数据储存于前端数据集当中的 DataTable 对象中,亦或是储存于不隶属于任...

weixin_30727835的博客 213

学习笔记:ADO.NET详解

了解ADO.NET 什么是ADO.NET呢?其实ADO.NET就是C#应用程序访问数据库的一个中间组件。 那ADO.NET又是由哪些部分组成呢?来看下面这张图 根据上面的图,来捋一遍数据库CRUD的流程: 连接数据库 >>> SqlCommand对数据库进行操作 >>> 查询出的数据放到DataSet中(若是增删改只是返回受影响记录条数,即返回int) &g...

KeithRong的博客 4027

C# .NET ADO.NET介绍和如何使用

我们看一下visual studio 里面ADO.NET文件ADO.NET是实体数据模型,是ORM对象文件。ORM,即Object-Relational Mapping(对象关系映射)。ORM实际上是对业务的简化。就想面向过程到面向对象的转变一样。ORM也是同样的想法。就是数据库存储的表和我程序的对象完全一致。这样存入和取出也方便无映射关系fill:#333;程序对应关系转化数据库增删改查程序对应关系转化数据库有映射关系fill:#333;程序数据库增删改查程序数据库。

qq_44695769的博客 7230

ADO与ADO.NET 的区别

前面也分别对ADO和ADO.NET进行概述,从前面的两篇文章来看,我们都知道ADO与ADO.NET 都是一种数据库访问的方式,都是从最基本的Connection(连接)对象开始的,可以说ADO.NET是ADO的一种改进版,在ADO的基础之上ADO.NET 统一了数据容器类编程接口,无论你打算用哪种编写哪种应用程序,都可以通过同一组类来处理数据 。 在ADO的基础上,ADO.NET做了很多的改进,以...

极客神殿 3579

两种数据访问方式:从ADO 到ADO.NET

电脑最大的好处就是可以帮助人处理大量数据,由此离不开对数据库的访问,先看看最近在做ASP.NET例子的时候经常用到的ADO.NET的数据库访问方式。

搬砖工 1万+
上一篇: conn
下一篇: 转:跟老外练习口语的方法
cuixie7913
博客等级 码龄11年 10粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值