当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 使用ADO.NET轻松操纵数据库

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

ASP.NET 中的 使用ADO.NET轻松操纵数据库


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 30 ::
收藏到网摘: n/a

    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.GetInt32(0).ToString()+" "+reader.GetString(1).ToString()+" <br>");
   }

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

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

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

 例:   

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

  3,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.ToInt32(cmd.ExecuteScalar()); //必须强制转换

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

   string strCon="server=localhost;database=Northwind;Trusted_Connection=Yes;";
   SqlConnection con=new SqlConnection(strCon);