使用命令构建器SqlCommandBuilder

// 使用命令构建器SqlCommandBuilder
// SqlCmdBuilder.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace Ch13
{
    class SqlCmdBuilder
    {
        static void Main( string[] args)
        {
            string strConn = "server=.\\MSSQL2012;integrated security=true;database=Northwind";
            string qry = "select * from employees where employeeid>8" ;           
            SqlConnection conn = new SqlConnection(strConn);
            try
            {
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand(qry, conn);
                // 为了使命令构建器工作,数据适配器的SelectCommand属性
                // 必须包含一个查询,它返回数据库表的主键或唯一键。
                // 如果该键不存在,就会生成InvalidOperation异常,不会生成命令。               
                // 不必写带参数的SQL,以及为SqlCommand添加参数映射的代码。
                // 创建命令构建器。
                SqlCommandBuilder cb = new SqlCommandBuilder(da);

                DataSet ds = new DataSet();
                da.Fill(ds, "emp");
                DataTable dt = ds.Tables[ "emp"];

                Console.WriteLine( "添加前");
                foreach (DataRow row in dt.Rows)
                {
                    Console.WriteLine( "{0} {1} {2} {3}"
                        , row[ "employeeid"].ToString().PadRight(5)
                        , row[ "firstname"].ToString().PadRight(15)
                        , row[ "lastname"].ToString().PadRight(15)
                        , row[ "city"]);
                }
                // 添加新行
                DataRow newrow = dt.NewRow();
                newrow[ "firstname"] = "张" ;
                newrow[ "lastname"] = "三" ;
                newrow[ "titleofcourtesy"] = "先生" ;
                newrow[ "city"] = "深圳" ;
                newrow[ "country"] = "中国" ;
                dt.Rows.Add(newrow);

                // 由于新行是添加到内存表,因此employeeid是未知的,不会显示
                Console.WriteLine( "添加后");
                foreach (DataRow row in dt.Rows)
                {
                    Console.WriteLine( "{0} {1} {2} {3}"
                        , row[ "employeeid"].ToString().PadRight(5)
                        , row[ "firstname"].ToString().PadRight(15)
                        , row[ "lastname"].ToString().PadRight(15)
                        , row[ "city"]);
                }
                // 提交到数据库               
                da.Update(ds, "emp");
            }
            catch( Exception ex)
            {
                Console.WriteLine( "出错了:" + ex);
            }
            finally
            {
                conn.Close();
                Console.ReadLine();
            }
        }
    }
}
---------------------
添加前
9     Anne            Dodsworth       London
添加后
9     Anne            Dodsworth       London
      张               三               深圳


来自为知笔记(Wiz)


posted on 2013-08-24 00:44  伊利丹  阅读(289)  评论(0编辑  收藏  举报