编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

SQL - DataSet断开式数据访问(*) 171

wxchong 2024-07-16 10:08:04 开源技术 22 ℃ 0 评论

#妙笔生花创作挑战#

DataSet在ADO.Net中称为:断开式数据访问,也被称为是数据的集合,临时数据库,内存数据库,多用于多层应用程序之间传递数据 ,现今一般都是转换为List<T>集合后使用(T实体类)

ADO.Net中提供了数据集的机制,就是使用SqlDataAdapter类将查询的结果通过Fill()方法填充DataSet中,存储在DataSet中的数据称为数据集,SqlDataAdapter类是DataSet和数据库之间沟通的桥梁;使用DataSet存储的数据即使连接断开或者服务器断开都不影响对数据的读取

SqlDataAdapter类的底层代码还是使用SqlCommand和SqlDataReader类来实现的,SqlDataAdapter类只是对它们进行了封装,使用SqlDataAdapter类它会自动打开关闭连接

声明一个DataSet对象的临时数据库,然后需要使用到DataAdapter类通过其构造方法得到数据,最后通过DataAdapterl类对象的Fill()方法将数据装填入DataSet临时数据库中,还可以通过Fill()方法进行数据分页

//窗体加载事件
private void Form1_Load(object sender, EventArgs e)
{
    //连接字符串
    string constr = "Data Source=.;Initial Catalog=School;Integrated Security=True";
    //查询出 Student 表的数据
    string sql = "select * from Student";
    //临时数据库 School临时数据库名称        
    DataSet ds = new DataSet("School");
    using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr))
    {
        //通过Fill()将查询出的数据集存储在ds中
        //adapter.Fill(ds);

        //内部创建表,表名stu
        //adapter.Fill(ds,"stu");

        //通过Fill()将数据进行分页
        //ds 临时数据库
        //0 从第几行数据开始
        //10 每页显示多少条数据
        //stu 起的表名
        adapter.Fill(ds, 1, 10, "stu");
    }
    //将数据赋值给DataGridView控件(dgv1)的DataSource属性
    //通过索引 ds.Tables[0] 将临时数据库中第一张表中数据赋值给DataSource
    //dgv1.DataSource = ds.Tables[0];
    //通过表名将临时数据库中表名stu 赋值给DataSource
    dgv1.DataSource = ds.Tables["stu"];
}

通过DataAdapter的Fill()填充DataSet;使用Fill()方法也可以实现分页但不是高效分页,它是在服务器端先把数据都查询出来,然后通过DataReader跳过前面的不要数据,过滤出后面想要的数据

真正的数据分页应该是在数据库中就只查询出所需当前页的数据,这个是高效分页的方式,可通过数据库提供的ROW_NUMBER()函数进行高效的数据分页

DataAdapter的Fill()不止可以向DataSet装填数据还可以向DataTable类型中装填数据,这个类型也是以后常用的,SQLHelper类中的一个封装的静态方法,返回值就是DataTable类型

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表