代码改变世界

SqlDataAdapter和SqlCommandBuilder删除数据

2012-03-07 11:47  java20130722  阅读(309)  评论(0编辑  收藏  举报
using System;
using System.Data;
using System.Data.SqlClient;

//SqlDataAdapter网站:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx
//SqlCommandBuilder网站:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx

namespace Chapter13
{
    class PersistDels
    {
        static void Main(string[] args)
        {
            // connection string
            string connString = @"
            server = .;
            integrated security = true;
            database = northwind
         ";

            // query
            string qry = @"
            select
               *
            from
               employees
            where
               country = 'UK'
         ";

        

            // Create connection
            SqlConnection conn = new SqlConnection(connString);

            try
            {
                // create data adapter
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(qry, conn);

                SqlCommandBuilder sqlCmdBder = new SqlCommandBuilder(da);

                // create and fill dataset
                DataSet ds = new DataSet();
                da.Fill(ds, "employees");

                // get data table reference
                DataTable dt = ds.Tables["employees"];

                // display rows
                foreach (DataRow row in dt.Rows)
                {
                    Console.WriteLine(
                       "{0} {1} {2}",
                       row["firstname"].ToString().PadRight(15),
                       row["lastname"].ToString().PadLeft(25),
                       row["city"]);
                }

                string filt = @"
                  firstname = 'Roy'
                  and
                  lastname = 'Beatty'
            ";
                //
                // delete employees
                foreach (DataRow row in dt.Select(filt))
                {
                    row.Delete();
                }
                //很重要的一步,把本地修改提交至至数据库。
                da.Update(ds, "employees");
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e);
            }
            finally
            {
                // close connection
                conn.Close();
            }
        }
    }
}