- 浏览: 59123 次
- 性别:
- 来自: 苏州
文章分类
最新评论
一 ADO.Net简介
访问数据库的技术有许多,常见的有一下几种:开放数据库互联(ODBC)、数据访问对象(DAO)、远程数据对象(RDO)、 ActiveX数据对象(ADO)。我们今天主要要学习ADO.NET中OracleClient命名空间中的几个常用对象,用这作为对ADO.NET认识学习的开始。
ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。但是ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET为.NET构架提供了优化的数据访问模型,和基于COM的ADO是完全两样的数据访问方式。
ADO.NET是一组访问数据源的面向对象的类库。简单的理解,数据源就是数据库,它同时也能够是文本文件、Excel表格或者XML文件。ADO.NET里包括了许多专门用于和数据打交道的对象。下面介绍了一些最常用的对象。这些对象是学习ADO.NET必须了解的。掌握它们后我们将了解使用ADO.NET和数据打交道需要考虑哪些事情。
OracleConnection 对象
要访问一个数据源,你必须先建立一个到它的连接。这个连接里描述了数据库服务器类型、数据库名字、用户名、密码,和连接数据库所需要的其它参数。command对象通过使用connection对象来知道是在哪个数据库上面执行ORACLE命令。
oracleConn.ConnectionString = "User Id=scott;Password=tiger;
Data Source=oracleSN;";
oracleConn.Open();
OracleCommand对象
连接数据库后就可以开始想要执行的数据库操作,这个是通过command对象完成,command对象一般被用来发送ORACLE语句给数据库。command对象通过connection对象得知道应该与哪个数据库进行连接。我们既可以用command对象来直接执行ORACLE命令,也可以将一个command对象的引用传递给OracleDataAdapter,OracleDataAdapter能包含一系列的command对象,可以处理大量数据。
{
string queryString = "SELECT EmpNo, DeptNo FROM Scott.Emp";
OracleConnection connection = new OracleConnection(connectionString)
{
OracleCommand command = new OracleCommand(queryString, connection);
connection.Open();
OracleDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetInt32(1));
}
}
finally
{
reader.Close();
}
}
}
OracleDataReader对象
许多数据库操作要求我们仅仅只是需要读取一组数据。这时候就用到了data reader对象。通过data reader对象,我们可以获得从command对象的SELECT语句得到的结果。考虑到性能方面的因素,data reader返回的数据流被设计为只读的、单向的,这将意味着你只能按照一定的顺序从数据流中取出数据。虽然你在这里也获得了性能上的提升,但是缺点也是明显的,不能够操作取回数据,如果需要操作编辑数据,解决的办法是使用DataSet。
OracleDataReader提供了几个方法,在读取数据的时候用这些方法可以对数据表中的数据按数据类型进行筛选:GetDateTime, GetDouble, GetGuid, GetInt32。
DataSet对象
DataSet对象用于表示那些储存在内存中的数据。它包括多个DataTable对象,DataTable就象一个普通的数据库中的表一样,也有行和列,我们甚至能够通过定义表和表之间的关系来创建从属关系。DataSet主要用于管理存储在内存中的数据以及对数据的断开操作。注意,由于DataSet对象能被所有Data Providers(数据源交互的类库)使用,它不需要指定前缀。
OracleDataAdapter对象
某些时候我们只需要读数据,并且你不需要修改它们把更改写回数据源。但是还有这样一些情况为了减少数据库调用的次数,我们把数据缓存在内存中。Data adapter通过断开模型来轻松的实现了后面这种情况的处理。当批量完成的对数据库的读写操作的并将改变写回数据库的时候,data adapter 会填充(fill)DataSet对象。data adaapter里包含了connection对象,当对数据源进行读取或者写入的时候,data adapter会自动的打开或者关闭连接。此外,data adapter还包含对数据的SELECT,INSERT,UPDATE和DELETE操作的command对象引用。如果我们为DataSet中的每一个table都指定data adapter,它将会帮你处理好所有与连接处理数据库的操作,我们所需要做的仅仅就是告诉data adapter什么时候读取或者写入到数据库。
二用C# 写一个连接数据库程序的步骤
在程序中要使用 System.Data.OracleClient 命名空间中类的子集来对Oracle数据库操作的步骤:
1、 将 System.Data.OracleClient(用于Oracle 的 Microsoft .NET 框架数据提供程序)的引用添加到项目中。
2、 使用 using 指令导入 OracleClient 类中的类型。
using System.Data.OracleClient;
3、创建一个 OracleConnection 对象。
7、 使用 OracleCommand 对象的一个 Execute 方法执行CommandText中的SQL语句,如下所示: Execute方法 说明 ExecuteReader 通过执行能够返回结果集生成 OracleDataReader。 ExecuteNonQuery 执行返回受影响的行数。 ExecuteOracleNonQuery针对OracleCommand.Connection执行SQL语句,返回受影响的行数。 ExecuteScalar 执行一个查询并且返回查询结果集第一行第一列的值作为 .NET 框架数据类型返回。 ExecuteOracleScalar执行一个查询并且返回查询结果集的第一行第一列的值作为Oracle指定类型(OracleType 数据类型)返回。 三 详细操作总结 1.数据库连接有2种: 第一种:古老的方法(较为死板,不利于灵活操作),即用OracleConnection的类来连接 第二种:新式的方法(使用较为灵活),即利用OracleConnectoinStringBuilder类来连接 2. 数据库表的操作 2.1数据库表的查询、添加、删除和修改。 第三种:利用OracleCommand的CommandText属性 2.2 数据集的浏览 2.3事务的操作。 数据库事务是指作为单个逻辑工作单元执行的一系列操作。 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: •更新客户所购商品的库存信息 •保存客户付款信息--可能包括与银行系统的交互 •生成订单并且保存到数据库中 •更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。 2.4从数据表中读取图片数据 2.5 命令参数的创建和使用 创建命令参数
4、创建一个 OracleCommand 对象。将其 Connection 属性设置为上一步中创建的连接。将其 CommandText 设置为想对数据库表进行的操作,即SQL语句。
cmd.Connection = conn;
cmd.CommandText = "select * from table";
5、创建OracleParameter 对象,并将其添加到 OracleCommand 对象的参数集合中。(如果CommandText中有参数,需要创建此对象)
6、 如果您要浏览操作的结果集,请创建 DataSet、DataTable 或 DataReader。。
cmd.ExecuteNonQuery();
conn.Close();
OracleConnection mycnn = new OracleConnection(myOraclestr);
mycnn.open();
OCnnStrB.DataSource = "xal";
OCnnStrB.UserID = "xal";
OCnnStrB.Password = "xal";
OracleConnection myCnn = new OracleConnection(OCnnStrB.ConnectionString);
myCnn.open();
OracleDataAdapter myoadapt = new OracleDataAdapter(Oraclestr, myConnection);
OracleCommand myocmd = new OracleCommand(Oraclestr, myConnection);
myocmd.ExecuteNonQuery();
Comm.Connection = myConnection;
Comm.Transaction = myConnection.BeginTransaction();
Comm.CommandText = "select * from table";
Comm.ExecuteNonQuery();
Comm.Transaction.Commit();
OracleDataAdapter myoadapt = new OracleDataAdapter(Oraclestr, myConnection);
DataTable mydtable = new DataTable();
myoadapt.Fill(mydtable);
foreach (DataRow dr in mydtable.Rows)
{
comboBox1.Items.Add(dr[0].ToString());
}
string myConnString = "user id=xal;data source=xal2;password=xal";
OracleConnection myConnection = new OracleConnection(myConnString);
myConnection.Open();
{
//创建事务
OracleTransaction myTransaction = myConnection.BeginTransaction();
OracleCommand myocmd = new OracleCommand("", myConnection);
myocmd.Transaction = myTransaction;
try
{
//语句块
myTransaction.Commit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
myTransaction.Rollback();
}
finally
{
myConnection.Close();
}
}
// fileLength是数组的长度(图片的大小)和curImageFormat图片格式。
fileLength = tmpImage.Length;
MemoryStream curStream = new MemoryStream(tmpImage);
picPersonel.Image = Image.FromStream(curStream);
curImageFormat = picPersonel.Image.RawFormat;
{
OracleParameter Result = new OracleParameter();
Result.ParameterName = ParamName;
if (ParamValue != null)
{
Result.Value = ParamValue;
}
else
{
Result.Value = DBNull.Value;
}
Result;
}
insertComm.Parameters.Add(CreateOraParam("pID", (txtID.Text.Trim() != "") ? txtID.Text.Trim() : null));
发表评论
-
C# Socket笔记
2012-11-19 11:41 6141. Socket的异步通信和同步通信是针对程序的写法来说的, ... -
C# 类型基础
2012-10-08 13:43 575C# 类型基础 引言 本文之初的目的是讲述设计模式中的 ... -
C#调用oracle存储过程最简单的实例
2012-10-03 07:37 622C#调用oracle存储过程最简单的实例 Oracle ... -
深刻理解C#中资源释放
2012-10-02 20:27 1080今天我的一个朋友看到我写的那篇《C#中用A ... -
c# 获取方法所在的命名空间 类名 方法名
2012-09-21 09:13 966using System;using System.Colle ... -
连接字符串
2012-09-06 10:39 616[MAIN] string dataD ...
相关推荐
ADO.net入门简介 ADO.net 对象模型 .Net数据提供程序
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
ADO.NET数据访问基础 (已经发布!) 7.1 ADO与ADO.NET概述
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
ADO.NET简介.exeADO.NET简介.exeADO.NET简介.exe
《ADO.NET 4从入门到精通》主要内容简介:ADO.NET是windows开发平台上的核心数据技术之一。《ADO.NET 4从入门到精通》是microsoft ADO.NET 4的入门教程,旨在帮助visual basic和c#开发人员了解ADO.NET及相关技术的...
ADO.Net助手是一个获取ADO.Net连接字符串(支持Access,SQLite,SQLServer,MySQL和ORACLE),测试SQL命令,存储过程和数据库之间互导数据的辅助软件。ADO.Net助手还可以用来以插入SQL语句形式导出导入记录,目前提供了...
ADO.NET 简介 某个培训机构的教程 讲的还算可以
数据ADO.NET sql、LINQ to sql、ADO.NET Entity Framework(EF)数据库连接性能比较,主要比较了插入与读取的时间,读取里可以进行模糊检索
摘要:基于ASP.NET的WEB应用程序项目,使用程序语言C#,利用ADO.NET访问数据库,实现一个简易的用户登陆注册系统。主要实现的功能有用户登陆、用户注册、找回密码,... 关键字:ASP.NET;ADO.NET;WEB;vs2010;数据库
ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试上机题ADO.NET考试...
ADO.NET资料-demo程序 ADO.NET简介.ppt
C#与数据库访问技术 ADO.NET(ActiveX Data Object.NET)是Microsoft公司开发的用于数据库连接的... ADO.NET还提供了对XML格式文档的支持,所以通过ADO.NET组件可以方便地在异构环境的项目间读取和交换数据。 ......
ADO.NET自己封装SqlHelper类 1、简单封装 2、传递参数封装 3、参数可变封装
Professional ADO .NET Programming Professional ADO .NET Programming Professional ADO .NET Programming Professional ADO .NET Programming
关于ado.net简单的参数化查询,操作的是oracle数据库!关于ado.net简单的参数化查询,操作的是oracle数据库!