知识大全 ADO.NET操纵数据库

Posted

篇首语:案头见蠹鱼,犹胜凡俦侣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ADO.NET操纵数据库相关的知识,希望对你有一定的参考价值。

ADO.NET操纵数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  ADO NET提供了Connection来连接数据库 同时也提供了Command对象来查询数据库 同Connection对象一样 Command也有两种 OleDbCommand和SqlCommand 其区别同Connection对象

  要操纵数据库 必须先使用Connection来连接到数据库 再创建一个Command来查询 有几种创建方式 例

  SqlCommand cmd

  string strCon= server=localhost database=Northwind Trusted_Connection=Yes string strqry= select * from Categories SqlConnection con=new SqlConnection(strCon) con Open() cmd=con CreateCommand() //这里使用用Connection对象的CreateCommand方法来创建一个Command对象

  cmd CommandText=strqry // SqlDataReader reader=cmd ExecuteReader()

   cmd=new SqlCommand() //直接使用new 关键字来创建cmd CommandText=strqry cmd Connection=con //设置与数据库的连接

   cmd=new SqlCommand(strqry con)  //直接在new的时候带两个参数来创建

  执行方式

  (主要有这么几种 cmd ExecuteReader() cmd ExecuteNonQuery() cmd ExecuteScalar() cmd ExecuteXmlReader() )

  1 ExecuteReader() 返回一个SqlDataReader对象或OleDbDataReader对象 这个看你的程序的需要去  做 可以通过这个对象来检查查询结果 它提供了 游水 式的执行方式 即从结果中读取一行之后 移动到另一行 则前一行就无法再用 有一点要注意的是执行之后 要等到手动去调用Read()方法之后 DataReader对象才会移动到结果集的第一行 同时此方法也返回一个Bool值 表明下一行是否可用 返回True则可用 返回False则到达结果集末尾

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

  int id=reader GetOrdinal( CategoryName ) while(reader Read())

   Response Write(reader[id]) reader Close()

  至于第二种方式很直观 例

  while(reader Read())

   Response Write(reader GetInt ( ) ToString()+ +reader GetString( ) ToString()+ <br> )

  DataReader的GetInt ()和GetString()通过接收一个列号来返回一个列的值 这两种是最常用的 其中  还有很多其它的类型

  (注 DataReader对象在调用Close()方法即关闭与数据库的连接 如果在没有关闭之前又重新打开第二个连接 则会产生一条异常信息)

   ExecuteNonQuery() 这个方法并不返回一个DataReader对象 而是返回一个int类型的值 即在执行之后在数据库中所影响的行数

  例

  int affectrows=cmd ExecuteNonQuery() Response Write(affectrows + 条记录受影响 )

   ExecuteScalar() 这个方法不接受任何参数 仅仅返回查询结果集中的第一行第一列 而忽略了其它的行和列 而且返回的是一个object类型 在使用之前必须先将它强制转换为所需类型 如果返回的仅仅是一个单独的数据元 则可以使用此方法来提高代码的性能 例

  string strCon= server=localhost database=Northwind Trusted_Connection=Yes string strqry= select count(*) from Categories SqlConnection con=new SqlConnection(strCon) con Open() SqlCommand cmd=con CreateCommand() int i=Convert ToInt (cmd ExecuteScalar())  //必须强制转换

   ExecuteXmlReader() 此方法用于XML操作 返回一个XmlReader对象 由于系统默认没有引用 System Xml名空间 因此在使用前必须前引入 例

  string strCon= server=localhost database=Northwind Trusted_Connection=Yes SqlConnection con=new SqlConnection(strCon) con Open() SqlCommand cmd = new SqlCommand( select * from Categories FOR XML AUTO XMLDATA con) XmlReader xr=cmd ExecuteXmlReader() Response Write(xr AttributeCount)   //这里获取当前节点上的属性个数

  xr Close()

  执行完毕之后 照样要显式地调用Close()方法 否则会抛出异常

  使用参数化的查询

  先看一段SQL语句 select CategoryID Description from Categories where CategoryID=? 其中的问号就是一个参数 但在使用的时候必须是带有@前缀的命名参数 因为 NET数据提供程序不支持这个通用的参数标记 ? 使用参数化的查询可以大大地简化编程 而且执行效率也比直接查询字符串要高 也更方便 很多情况下都需要更改查询字符串 这种方式就提供了方便 只需更改参数的值即可 例

  string strCon= server=localhost database=Northwind Trusted_Connection=Yes SqlConnection con=new SqlConnection(strCon) con Open() string strqry= select * from Categories where CategoryID=@CategoryID  //带参数的查询SqlCommand cmd=new SqlCommand(strqry con) cmd Parameters Add( @CategoryID SqlDbType Int )  //给参数赋于同数据库中相同的类型cmd Parameters[ @CategoryID ] Value=  //给参数赋值 可灵活改变SqlDataReader r=cmd ExecuteReader() while(r Read())

   Response Write(r GetString( )+ <br> )  //取出指定参数列的值 con Close()  //切记关闭

cha138/Article/program/net/201311/13317

相关参考

知识大全 通过ADO.NET访问数据库

通过ADO.NET访问数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一ADONET访问数据

知识大全 ADO.Net 连接数据库示例

ADO.Net连接数据库示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  连接本地SQLSer

知识大全 使用ADO.NET设计数据库应用程序

使用ADO.NET设计数据库应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  认识ADO和

知识大全 ADO.Net与ADO在数据内存中的差异讨论

ADO.Net与ADO在数据内存中的差异讨论  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据

知识大全 在 ADO 和 ADO.NET 中管理离线数据

在ADO和ADO.NET中管理离线数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  您可以使用

知识大全 ADO.NET中的.NET数据提供者

ADO.NET中的.NET数据提供者  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ADONET

知识大全 ADO.NET 连接数据库字符串小结

ADO.NET连接数据库字符串小结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinz

知识大全 Ado.net访问数据库的方法和步骤

Ado.net访问数据库的方法和步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 ado.net数据库连接

   紧急求助程序连接sqlserver数据库出现问题   服务器配置   windowsxp &n

知识大全 漫谈.Net PetShop和Duwamish ADO.NET数据库编程

漫谈.NetPetShop和DuwamishADO.NET数据库编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快