ado.net_2.0_标准教程

上传人:小** 文档编号:89122046 上传时间:2019-05-18 格式:DOC 页数:68 大小:319KB
返回 下载 相关 举报
ado.net_2.0_标准教程_第1页
第1页 / 共68页
ado.net_2.0_标准教程_第2页
第2页 / 共68页
ado.net_2.0_标准教程_第3页
第3页 / 共68页
ado.net_2.0_标准教程_第4页
第4页 / 共68页
ado.net_2.0_标准教程_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《ado.net_2.0_标准教程》由会员分享,可在线阅读,更多相关《ado.net_2.0_标准教程(68页珍藏版)》请在金锄头文库上搜索。

1、使用ADO.NET轻松操纵数据库日期:2006-03-29要操纵数据库,必须先使用Connection来连接到数据库,再创建一个Command来查询。有几种创建方式,例:OracleCommand cmd;string strCon=Password=microsoft;Persist Security Info=false;User ID=scott;Data Source=orcl;Integrated Security=true”;string strqry=select * from dept;OracleConnection con=new OracleConnection(strC

2、on);con.Open();cmd=con.CreateCommand(); /这里使用用Connection对象的CreateCommand方法来创建一个Command对象。cmd.CommandText=strqry;/OracleDataReader reader=cmd.ExecuteReader();cmd=new OracleCommand();? /直接使用new 关键字来创建cmd.CommandText=strqry;cmd.Connection=con;? /设置与数据库的连接cmd=new OracleCommand(strqry,con);/直接在new的时候带两个参

3、数来创建执行方式:1.cmd.ExecuteReader();2.cmd.ExecuteNonQuery();3.cmd.ExecuteScalar();4.cmd.ExecuteXmlReader();),ExecuteReader();返回一个OracleDataReader对象可以通过这个对象来检查查询结果,从结果中读取一行之后,移动到另一行,则前一行就无法再用。有一点要注意的是执行之后,要等到手动去调用Read()方法之后,DataReader对象才会移动到结果集的第一行,同时此方法也返回一个Bool值,表明下一行是否可用,返回True则可用,返回False则到达结果集末尾。使用Dat

4、aReader可以提高执行效率,有两种方式可以提高代码的性能:一种是基于序号的查找,一个是使用适当的Get方法来查找。因为查询出来的结果一般都不会改变,除非再次改动查询语句,因此可以通过定位列的位置来查找记录。用这种方法有一个问题,就是可能知道一列的名称而不知道其所在的位置,这个问题的解决方案是通过调用DataReader 对象的GetOrdinal()方法,此方法接收一个列名并返回此列名所在的列号。例:int id=reader.GetOrdinal(CategoryName);while(reader.Read()Response.Write(readerid);reader.Close(

5、);至于第二种方式很直观,例:while(reader.Read()?Response.Write(reader.GetInt32(0).ToString()+ +reader.GetString(1).ToString()+ );DataReader的GetInt32()和GetString()通过接收一个列号来返回一个列的值,这两种是最常用的,其中还有很多其它的类型。(注:DataReader对象在调用Close()方法即关闭与数据库的连接,如果在没有关闭之前又重新打开第二个连接,则会产生一条异常信息)2.,ExecuteNonQuery()?这个方法并不返回一个DataReader对象,

6、而是返回一个int类型的值,即在执行之后在数据库中所影响的行数。例:int affectrows=cmd.ExecuteNonQuery();Response.Write(affectrows + 条记录受影响);?3,ExecuteScalar() 这个方法不接受任何参数,仅仅返回查询结果集中的第一行第一列,而忽略了其它的行和列,而且返回的是一个object类型,在使用之前必须先将它强制转换为所需类型。如果返回的仅仅是一个单独的数据元,则可以使用此方法来提高代码的性能。例:string strCon=Password=microsoft;Persist Security Info=false

7、;User ID=scott;Data Source=orcl;Integrated Security=true”;string strqry=select count(*) from dept;OracleConnection con=new OracleConnection(strCon);con.Open();OracleCommand cmd=con.CreateCommand();int i=Convert.ToInt32(cmd.ExecuteScalar();/必须强制转换4,ExecuteXmlReader() 此方法用于操作,返回一个XmlReader对象,由于系统默认没有引

8、用 System.Xml名空间,因此在使用前必须前引入。例:string strCon=Password=microsoft;Persist Security Info=false;User ID=scott;Data Source=orcl;Integrated Security=true”;OracleConnection con=new OracleConnection(strCon);con.Open();OracleCommand cmd = new OracleCommand(select * from dept FOR XML AUTO, XMLDATA, con);XmlRea

9、der xr=cmd.ExecuteXmlReader();Response.Write(xr.AttributeCount);/这里获取当前节点上的属性个数?xr.Close();执行完毕之后,照样要显式地调用Close()方法,否则会抛出异常。使用参数化的查询string strCon=Password=microsoft;Persist Security Info=false;User ID=scott;Data Source=orcl;Integrated Security=true”;OracleConnection con=new OracleConnection(strCon);

10、con.Open();string strqry=select * from dept where deptno=:deptno;/带参数的查询OracleCommand cmd=new OracleCommand(strqry,con);cmd.Parameters.Add(参数名,OracleType.Int,4);/给参数赋于同数据库中相同的类型cmd.Parameters参数名.Value=3;/给参数赋值,可灵活改变SqlDataReader r=cmd.ExecuteReader();while(r.Read()Response.Write(r.GetString(2)+);/取出

11、指定参数列的值con.Close();/切记关闭使用存储过程进行查询这个是数据库中的存储过程实现方式,要在程序中调用存储过程,一种方法是使用Command对象的CommandType属性来实现。CommandType有三个枚举值:Text,TableDirect,StoredProcedure。只需将CommandType属性设为StoredProcedure。例:string strCon=Password=microsoft;Persist Security Info=false;User ID=scott;Data Source=orcl;Integrated Security=true

12、”;OracleeConnection con=new OracleConnection(strCon);con.Open();OracleCommand cmd=con.CreateCommand();cmd.CommandText=包名.存储过程名;cmd.CommandType=CommandType.StoredProcedure;cmd.Parameters.Add(参数名,OracleType.Int,4);cmd.Parameters参数名.Value=2;OracleDataReader r=cmd.ExecuteReader();while(r.Read()Response.

13、Write(r.GetString(2)+);con.Close();cmd.CommandType=CommandType.StoredProcedure;当要查询的表,视图或存储过程的名称中有特殊的字符(如空格)的话,则将无法识别。另外一种方式就是: cmd.CommandText=Call cateproc(?);/这里是调用存储过程,问号为参数cmd.CommandType=CommandType.Text;/关键是这里。设置命令执行超时命令超时是指Command对象在等待结果的时间,(默认为秒)如果在秒内没执行查询,则Command抛出一个异常。也可以自己进行设置。例:cmd.Com

14、mandTimeout=60;取消执行查询有时因某种原因,需要临时取消命令的执行,可调用Command对象的Cancel()方法来退出执行,如果在未执行查询之前,Cancel()将不做任何事。1.在 HR 架构中创建一个名为 COUNT_JOB_HISTORY 的存储过程,以计算 JOB_HISTORY 表中的记录数。 CREATE OR new PROCEDURE COUNT_JOB_HISTORY(reccount OUT NUMBER)ISBEGINSELECT COUNT(*) INTO reccountFROM JOB_HISTORY;END COUNT_JOB_HISTORY;2.

15、将 System.Data.OracleClient.dll(用于 Oracle 的 Microsoft .NET 框架数据提供程序)的引用添加到项目中。 3.使用 using 指令导入 OracleClient 类中的类型。 using System.Data.OracleClient;4.创建一个 OracleConnection 对象。 OracleConnection conn = new OracleConnection(Data Source=oracledb;User Id=UserID;Password=Password;);用您的值替换 Oracle 数据库的名称、用户名和密码。 5.创建一个 OracleCommand 对象。将其 Connection 属性设置为第 4 步中创建的连接。将其 CommandText 设置为存储过程的名称,并将其 CommandTe

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号