ado.net读取数据的两种方法

1.使用Command和Datareader对象读取数据

  

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //打开一个页面时,初始状态时IsPostBack为false,执行if里面的语句,  
        //,这时IsPostBack变为true  

        if (!IsPostBack)
        {
          //创建数据库连接 Sqlconnection
            SqlConnection conn = new SqlConnection("server=(local);Initial Catalog=pubs;Integrated Security=True");
          //创建数据库语句
            string strsql = "select pub_name from publishers";
          //创建Sqlcommand对象
            SqlCommand comm = new SqlCommand(strsql, conn);
            try
            {
                //打开数据库连接
                conn.Open();
                //创建Sqldatareader对象
                SqlDataReader sdt = comm.ExecuteReader();       //执行sqldatareader
                while (sdt.Read())
                {   //注意如何将每次读取到的记录添加到listbox1中(因为第一次做时出错了,嘿嘿)
                    ListItem item = new ListItem(sdt["pub_name"].ToString());      
                    ListBox1.Items.Add(item);
                }
                sdt.Close();     //关闭sqldatareader
            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {   //关闭数据库连接
                conn.Close();
            }
        }

    }
}

 

总结:此种方法适用情形:a.不需要缓存数据

            b.需要处理的结果集太大,内存中存放不下

            c. 需要仅向前,只读方式快速访问数据库

 

2.使用Dataadaper与Dataset读取数据

 

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;  //在使用Microsoft Sql Server必须引用的命名空间

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlConnection conn = new SqlConnection("server=(local);Initial Catalog=pubs;Integrated Security=true");
            string strsql = "select pub_name from publishers";
            //创建一个SqlDataAdapter           
            SqlDataAdapter sda = new SqlDataAdapter(strsql, conn);
            //创建一个Dataset
            DataSet ds = new DataSet();
            //将Dataadpter获取的数据填充到ds中
            //并创建一个publishers  DataTable对象,将数据存其中
            sda.Fill(ds, "publishers");
            DataTable dt =  ds.Tables["publishers"];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ListItem item = new ListItem(dt.Rows[i][0].ToString());  //此处应该注意列的下标
                ListBox1.Items.Add(item);
            }
        }

    }
}

 

 总结:(1)Dateset主要是在内存中存放数据,是数据在内存在缓存,可一次读取整张数据表的内容

    (2)Dateset是一个对象集合,是由许多DataTable对象组成的。

 

posted @ 2009-11-07 23:16  小冠  阅读(726)  评论(0)    收藏  举报