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

ASP.NET
AspNetPager与Socut.Data使用实例代码
asp.net JavaScript插件 JavaScript Function Outliner
asp.net for循环语句
asp.net access添加返回自递增id的实现方法
asp.net SAF 中缓存服务的实现
asp.net小孔子cms中的数据添加修改
asp.net自定义控件代码学习笔记
用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中
.net三层结构初探分析
asp.net+js实时奥运金牌榜代码
asp.net SqlHelper数据访问层的使用
asp.net中利用ashx实现图片防盗链的原理分析
asp.net 2.0多语言网站解决方法
Ajax.net Sys未定义错误解决办法
.dll 文件反编译的工具软件集合
asp.net gridview 72般绝技
常用的在数据库中建立无限级树形菜单的asp.net代码
asp.net生成静态页并分页+ubb
Asp.net 通用万级数据分页代码[修正下载地址]
较为全面的Asp.net提交验证方案分析 (上)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 76 ::
收藏到网摘: 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);