黑马程序员---ADO.Net之DateSet

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

SqlDataReader是连接相关的, SqlDataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响。
SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计。ADO.Net中提供了DataSet(数据集)的机制,将查询结果填充到本地内存中,这样连接断开、服务器断开都不影响数据的读取。
DataSet dataset = new DataSet(); SqlDataAdapter adapter = newSqlDataAdapter(cmd); adapter.Fill(dataset);
SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。foreach(DataRow row in dataset.Tables[0].Rows) 。

在没有封装一个方法之前:

 string ConnStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString;  
02.            using (SqlConnection conn = new SqlConnection(ConnStr))  
03.            {  
04.                conn.Open();  
05.                using (SqlCommand cmd = conn.CreateCommand())  
06.                {  
07.                    cmd.CommandText = "Select * from Person";  
08.                    DataSet dataset = new DataSet(); //相当于一个容器  
09.                    SqlDataAdapter adapter = new SqlDataAdapter(cmd); // 执行SQl语句的cmd语句(将查询的cmd作为参数传递给adapter(SqlDataAdapter是DataSet和数据库之间沟通的桥梁))  
10.                    adapter.Fill(dataset); // 将执行的结果填充到DataSet  
11.                    /*  
12.                    DataTable table = dataset.Tables[0];  
13.                    for (int i = 0; i < table.Rows.Count; i++)  
14.                    {  
15.                        DataRow row = table.Rows[i];  
16.                        string name = Convert.ToString(row["Name"]);  
17.                        MessageBox.Show(name);  
18.                    }*/  
19.                    foreach(DataRow row in dataset.Tables[0].Rows)  
20.                    {  
21.                        string name = Convert.ToString(row["Name"]);  
22.                        MessageBox.Show(name);  
23.                    }  
24.                }  
25.  
26.            }  

添加一个SQLHelper.cs类,开始封装方法:

01.Class SQLHelper  
02.{  
03.   public static DataTable ExcuteDataTable(string sql, params SqlParameter[] parameters)  
04.        {  
05.  
06.            string ConnStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString;  
07.            using (SqlConnection conn = new SqlConnection(ConnStr))  
08.            {  
09.                conn.Open();  
10.                using (SqlCommand cmd = conn.CreateCommand())  
11.                {  
12.                    cmd.CommandText = sql;//清除旧数据   
13.                    foreach (SqlParameter parameter in parameters)  
14.                    {  
15.                        cmd.Parameters.Add(parameter);  
16.                    }  
17.                    DataSet dataset = new DataSet();  
18.                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);  
19.                    adapter.Fill(dataset);  
20.                    return dataset.Tables[0];  
21.  
22.                }  
23.            }  
24.        }  
25.} 

 

调用ExcuteDataTable():

01.DataTable dt = SQLHelper.ExcuteDataTable("select * from Person ");  
02.           for (int i = 0; i < dt.Rows.Count; i++)  
03.           {  
04.               DataRow row = dt.Rows[i];  
05.               string name = Convert.ToString(row["Name"]);  
06.               MessageBox.Show(name);  
07.           }  


---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ---------------------- 详细请查看:http://net.itheima.com

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值