018. ADO.NET _DataSet_DataAdapter

DataSet对象是支持ADO.NET的断开式或分布式数据方案的核心对象; DataAdapter对象是一种用来充当DataSet对象与实际数据源之间的桥梁 的对象, 所以二者结合访问数据库中数据模式可称为离线数据访问模式.

 

DataSet是Ado.net最核心成员之一, 它支持ADO.NET断开式, 分布式数据方案的核心对象, 也是实现基于非连接的数据查询的核心组件. 对于DataSet对象可以将其看做是在内存中创建的一个小型关系数据库

 

ADO.NET对数据库的访问:

SqlDataAdapter类的两大作用:

作用一:可以使用SqlDataAdapter类从数据库中获取数据,并将其填充在数据集中。

作用二:可以使用SqlDataAdapter类将数据集中的更改(在数据集中添加记录、修改记录和删除记录),提交给后台真实数据库,使数据集(虚拟数据库)与后台真实数据库保持同步更新。

 SqlDataAdapter类位于System.Data.SqlClient命名空间下。

 

SqlDataAdapter对象的常用属性

属 性

说 明

SelectCommand属性

指定一个Command对象,用来执行查询操作,从数据库中获取数据。 

InsertCommand属性

指定一个Command对象,用来执行添加操作,在数据库中添加数据。 

UpdateCommand属性

指定一个Command对象,用来执行修改操作,在数据库中修改数据。 

DeleteCommand属性

指定一个Command对象,用来执行删除操作,在数据库中删除数据。

 

SqlDataAdapter对象的常用方法

方 法

说 明 

Fill方法

将从数据库中获取到的数据填充到数据集中。 

Int Fill(DataSet dataset,String str)

填充指定的DataSet中指定的表

Update方法

将数据集中的更改(包括:已添加的记录、已修改的记录、已删除的记录),提交给数据库,使数据集与数据库保持同步更新。

Update(DataSet)

根据指定的数据集中的数据表更新数据源

Update(DataTable)

根据指定的数据表更新数据源

Update(dataRows):

根据指定的数据行数组更新数据源

   示例:

    protected void Page_Load(object sender, EventArgs e)
    {
        //创建连接字符串
        string strCon = @"server=.;database=TYW;uid=sa;pwd=123.456;";
        //创建数据库连接对象
        SqlConnection con = new SqlConnection(strCon);
        //创建SqlDataAdapter对象
        SqlDataAdapter dap = new SqlDataAdapter("select * from card", con);
        //创建DataSet对象
        DataSet ds = new DataSet();
        //填充数据集
        int counter = dap.Fill(ds, "card");
        Response.Write("获得:" + counter.ToString() + "条数据!" + "<br/>");
        Response.Write("<table border='1'><tr><td>外卡号</td><td>内卡号</td><td>姓名</td></tr>");
        foreach (DataRow mydr in ds.Tables["card"].Rows)
        {
            Response.Write("<tr><td>" + mydr["cardNo"].ToString() + "</td><td>" + mydr["cardBound"].ToString() + "</td><td>" + mydr["name"].ToString() + "</td></tr>");
        }
        Response.Write("</table>");
        //执行一些修改, 将name为null或者空的重新赋值
        for (int i = 0; i < ds.Tables["card"].Rows.Count; i++)
        {
            if ( String.IsNullOrEmpty(ds.Tables["card"].Rows[i]["name"].ToString()))
            {
                ds.Tables["card"].Rows[i]["name"] = "55555";
            }
        }
        //使用SqlCommandBuilder对象,并和SqlDataAdapter关联,自动创建UpdateCommand; 在使用SqlCommandBuilder对象时, 数据库中的表必须定义主键
        SqlCommandBuilder builder = new SqlCommandBuilder(dap);
        dap.Update(ds, "card");   //应用SqlDataAdapter和的Update方法更新数据    Response.Write("*****************************************************************************");
        ShowDsTable(ds.Tables[0]);//调用自定义方法ShowDsTable显示更新后的数据
        dap.Dispose();
        ds.Dispose();
    }

    public void ShowDsTable(DataTable dataTable)
    {
        Response.Write("<table border='1'><tr><td>外卡号</td><td>内卡号</td><td>姓名</td></tr>");
        foreach (DataRow mydr in dataTable.Rows)
        {
            Response.Write("<tr><td>" + mydr["cardNo"].ToString() + "</td><td>" + mydr["cardBound"].ToString() + "</td><td>" + mydr["name"].ToString() + "</td></tr>");
        }
        Response.Write("</table>");
    }

 

posted on 2016-12-07 16:28  印子  阅读(235)  评论(0编辑  收藏  举报

导航