Asp.Net利用DataSet对数据库的增删改查,以及筛选操作并显示在网页上

首先自行创建一个School数据库,并添加一个Student的数据表,创建一个Default_DataSet.aspx的网页。

我们对数据库的操作封装成一个类,便于以后操作直接调用。

创建一个OperaData类:

    public class OperaData
    {
        SqlConnection conn = null;//定义连接的全局变量
        SqlCommand comm = null;//定义操作命令的全局变量
        SqlDataAdapter Adapter = null;//定义适配器

        //构造函数中实例化对象
        public OperaData()
        {
            conn = new SqlConnection("Server=SERVER-1;DataBase=School;User ID=sa;Password=123456");
            comm = new SqlCommand();
            Adapter = new SqlDataAdapter();
        }
        public DataSet ExecSelect()//数据库查询方法,DataSet为返回类型
        {
            conn.Open();//打开数据库
            comm.CommandType = CommandType.Text;//定义发送到数据库的SQL语句
            comm.CommandText = "select * from Student Order by ID";//定义查询语句
            comm.Connection = conn;//指定SQL命令所指定的数据库连接类
            Adapter.SelectCommand = comm;//定义查询命令
            DataSet ds = new DataSet();
            Adapter.Fill(ds);//填充数据集
            return ds;
        }
        public int Update(DataSet ds) //更新数据库
            //SqlCommandBuilder对象用于生成更新语句,SqlDataAdapter的Update方法用于执行更新数据库
        {
            SqlCommandBuilder scb = new SqlCommandBuilder(Adapter);
            return Adapter.Update(ds);
        }
        public void Complete()//更新,查询,删除数据库后执行统一释放资源
        {
            conn.Dispose();
            comm.Dispose();
            Adapter.Dispose();
        }
        public void InsertData(string Name, string Sex, string Age, string Class)//新增一行
        {
            DataSet ds = ExecSelect();//填充数据集
            DataRow dr = ds.Tables[0].NewRow();//新建一行
            dr["Name"] = Name;
            dr["Sex"] = Sex;
            dr["Age"] = Age;
            dr["Class"] = Class;
            ds.Tables[0].Rows.Add(dr);//数据集中添加行
            Update(ds);//提交更改
            Complete();//释放资源
        }
        public void update_DataSet(string Class)//查询并修改指定位置数据
        {
            DataSet ds = ExecSelect();//填充数据集
            DataTable dt = ds.Tables[0];//选定数据表
            DataRow[] dr = dt.Select("Class= '" + Class + "'");//查询数据
            for(int i = 0; i < dr.Length; i++)
            {
                dr[i]["Age"] = "250";
            }
            Update(ds);//提交更改
            Complete();//释放资源
        }
        public DataSet check_Data(int id)//检索指定具有指定ID的项的筛选,并单独呈现在网页上
        {
            DataSet ds_tmp = new DataSet();//建立一个临时的数据集用来存放筛选的项
            DataSet ds = ExecSelect();//原始填充数据集
            /*Clone和Copy:
             * 使用Copy方法会创建与原DataSet具有相同结构和相同行的新DataSet.
             * 使用Clone方法会创建具有相同结构的新DataSet,但不包含任何行。*/
            ds_tmp = ds.Clone();
            DataTable dt = ds.Tables[0];//选定数据表
            DataRow[] drs = dt.Select("ID='" + id + "'");//查询数据
            foreach(DataRow dr in drs)
            {
                /*NewRow() 创建与该表具有相同架构的新DataRow*/
                ds_tmp.Tables[0].NewRow();
                /*ItemArray:获取或设置行中所有列的值。*/
                ds_tmp.Tables[0].Rows.Add(dr.ItemArray);
            }
            /*AcceptChanges和RejectChanges:
             * 接受或放弃DataSet中所有挂起更改。调用AcceptChanges时,
             * RowState属性值为Added或Modified的所有行的RowState属性都将被设置为UnChanged.
             * 任何标记为Deleted的DataRow对象将从DataSet中删除。
             * 调用RejectChanges时,任何标记为Added的DataRow对象将会被从DataSet中删除,
             * 其他修改过的DatRow对象将返回前一状态。*/
            ds.AcceptChanges();//应用更改
            Complete();//释放资源
            return ds_tmp;//返回筛选表
        }
        public void delete_Data(int id)//删除数据
        {
            DataSet ds = ExecSelect();//填充数据集
            DataTable dt = ds.Tables[0];//选定数据表
            DataColumn[] keys = new DataColumn[1];//创建列的对象
            keys[0] = dt.Columns["ID"];//这里表的第一列为UserName
            dt.PrimaryKey = keys;//绑定主键
            //DataRow[] drs = dt.Select("ID='" + id + "'");//查询数据
            DataRow drs1 = dt.Rows.Find(id);//find方法用于直接通过ID标识来删除项目
            drs1.Delete();//删除表中指定行
            Update(ds);//提交更改
            Complete();//释放资源
        }
    }

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值