在DataTable中更新、删除数据

时间:2022-07-31 01:35:52

/*在DataTable中选择记录*/
在DataTable中更新、删除数据            /* 向DataTable中插入记录如上,更新和删除如下:
在DataTable中更新、删除数据             * ----但是在更新和删除前,首先要找出要更新和删除的记录。
在DataTable中更新、删除数据             * 一种方法是遍历DataRow,搜索想要的记录,
在DataTable中更新、删除数据             * --〉然而更聪明的办法是使用DataTable.Select方法:table.Select();
在DataTable中更新、删除数据             * table.Select();//返回DataRow[],可以包含一行或多行,
在DataTable中更新、删除数据             * 取决于Select()的参数(filter)
在DataTable中更新、删除数据             * gets an array of all Data.DataRow objects that match the
在DataTable中更新、删除数据             * filter in the order of the sort 
在DataTable中更新、删除数据             * that match the specified state
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("title_id='JP1001'");
在DataTable中更新、删除数据            /*
在DataTable中更新、删除数据             * 下面这条语句选择(返回)"Price"字段值小于10的DataRow
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("price<10.00");
在DataTable中更新、删除数据            /*
在DataTable中更新、删除数据             * 下面这条语句选择Pubdate字段日期在2000年1月1日当天或之后的DataRow 
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("pubdate>='#1/1/2000#'");
在DataTable中更新、删除数据            /*如果想知道Select返回了多少行,读取数组的Length属性*/
在DataTable中更新、删除数据            /*传递给DataTable.Select()的筛选器表达式: 
在DataTable中更新、删除数据             * 下面比较操作符可以被支持:<,<=,=,>=,>和<>也可以使用IN和Like
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            //返回"state"等于CA、TN或WA的所有行
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("state in('ca','tn','wa')");
在DataTable中更新、删除数据            //返回"state"以CA开头的所有行
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("state like 'ca*'");
在DataTable中更新、删除数据            //还可以使用一些Sql函数,在DataTable中选择State字段为空的记录
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("isnull(state,0)=0");
在DataTable中更新、删除数据            //还可以使用And、Or和Not
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("state='tn' and zip like '37*'");
在DataTable中更新、删除数据            /*总之,可以用括号分组,创建复杂的布尔表达式*/

在DataTable中更新数据

/*在DataTable中更新数据*/
在DataTable中更新、删除数据            /*
在DataTable中更新、删除数据             * 确定了要在DataTable中更新的记录后,
在DataTable中更新、删除数据             * 只要把记录的一个或多个字段替换成要更新的值即可,
在DataTable中更新、删除数据             * 下面的例子选择Pubs数据库的Titles表中所有ytd_sales大于10000的记录
在DataTable中更新、删除数据             * 把它们的价格加10.00
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
在DataTable中更新、删除数据            DataSet ds = new DataSet();
在DataTable中更新、删除数据            adapter.Fill(ds, "Titles");
在DataTable中更新、删除数据
在DataTable中更新、删除数据            DataTable table = ds.Tables["Titles"];
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("ytd_sales>10000");
在DataTable中更新、删除数据            foreach (DataRow row in arrRows)
在DataTable中更新、删除数据            {
在DataTable中更新、删除数据                row["price"] = (decimal)row["price"] + 10.00m;
在DataTable中更新、删除数据            }

在DataTable中更新、删除数据
在DataTable中更新、删除数据/*从DataTable中删除记录*/
在DataTable中更新、删除数据            /*
在DataTable中更新、删除数据             * 对每个要删除的行调用Delete就行了。
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            /*
在DataTable中更新、删除数据             * 下面删除ytd_sales小于10000或等于空的记录
在DataTable中更新、删除数据             * 
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
在DataTable中更新、删除数据            DataSet ds = new DataSet();
在DataTable中更新、删除数据            adapter.Fill(ds, "Titles");
在DataTable中更新、删除数据
在DataTable中更新、删除数据            DataTable table = ds.Tables["Titles"];
在DataTable中更新、删除数据            DataRow[] arrRows = table.Select("ytd_sales<10000 or isnull(ytd_sales,0)=0");
在DataTable中更新、删除数据            foreach (DataRow row in arrRows)
在DataTable中更新、删除数据            {
在DataTable中更新、删除数据                row.Delete();
在DataTable中更新、删除数据            }

把更改写回数据库DataAdapter.Update

在DataTable中更新、删除数据 /*把更改写回数据库DataAdapter.Update*/
在DataTable中更新、删除数据            /*Important: 这种在DataTable中进行的插入、更新和删除并不会自动写回数据库 
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            SqlDataAdapter adapter = new SqlDataAdapter(strSql, strConn);
在DataTable中更新、删除数据            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
在DataTable中更新、删除数据            DataSet ds = new DataSet();
在DataTable中更新、删除数据            adapter.Fill(ds, "Titles");
在DataTable中更新、删除数据            
在DataTable中更新、删除数据            //插入记录
在DataTable中更新、删除数据            DataTable table = ds.Tables["Titles"];
在DataTable中更新、删除数据            DataRow row = table.NewRow();
在DataTable中更新、删除数据            row["Title_id"] = "JP1001";
在DataTable中更新、删除数据            row["title"] = "programming Microsoft .NET";
在DataTable中更新、删除数据            row["price"] = 59.99m;
在DataTable中更新、删除数据            row["ytd_sales"] = 100000;
在DataTable中更新、删除数据            row["type"] = "business";
在DataTable中更新、删除数据            row["pubdate"] = new DateTime(2002, 5, 1);
在DataTable中更新、删除数据            table.Rows.Add(row);
在DataTable中更新、删除数据            //更新数据库
在DataTable中更新、删除数据            adapter.Update(table);
在DataTable中更新、删除数据            
在DataTable中更新、删除数据            /*DataAdapter的Update方法检查传递给表的每一条记录,把自从上次更新
在DataTable中更新、删除数据             * (或自从上次调用table的AcceptChanges方法后)被插入、更新或删除的行
在DataTable中更新、删除数据             * 写回数据库。如果DataSet中包含了多个被修改的DataTable,就把整个DataSet
在DataTable中更新、删除数据             * 传给Update方法: adapter.Update(ds),所有改变会被一次性写回。
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            /*
在DataTable中更新、删除数据             * 哦,还有许多演示DataAdapter.Update的用法的示例,演示了通过调用名为GetChanges
在DataTable中更新、删除数据             * 的方法创建一个只含有被插入、更新或删除行的新的临时DataSet或者DataTable
在DataTable中更新、删除数据             * ,然后把delta传递给DataAdapter.Update,如下:
在DataTable中更新、删除数据             * //更新数据库
在DataTable中更新、删除数据             * DataTable delta = table.GetChanges();
在DataTable中更新、删除数据             * adapter.Update(delta);
在DataTable中更新、删除数据             * 这种方法的确好用,但不是必需的。Update会忽略包含已修改和未修改的行的DataTable中
在DataTable中更新、删除数据             * 未被修改的行。
在DataTable中更新、删除数据             * 当要控制写回数据库中的更改的内容的顺序时,GetChanges方法发挥作用,
在DataTable中更新、删除数据             * 如果想在Insert前面执行Delete,以避免主键重复错误,应该这样做: 
在DataTable中更新、删除数据             */
在DataTable中更新、删除数据            //DataRowState ---->enum System.Data.DataRowState
在DataTable中更新、删除数据            //DataRowState.Deleted---->the row was deleted 
在DataTable中更新、删除数据            //                        using the row.Delete()
在DataTable中更新、删除数据            DataTable deletes = table.GetChanges(DataRowState.Deleted);
在DataTable中更新、删除数据            adapter.Update(deletes);
在DataTable中更新、删除数据            DataTable inserts = table.GetChanges(DataRowState.Added);
在DataTable中更新、删除数据            adapter.Update(inserts);
在DataTable中更新、删除数据            /*GetChanges的另一个用处是,
在DataTable中更新、删除数据             * 当更新不是在本地执行时,把机器间的数据传输量减到最小,
在DataTable中更新、删除数据             * 只传递被改变的DataSet或DataTable比传递整个DataSet或DataTable更高效              
在DataTable中更新、删除数据             */