使用命令构造器添加行

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace PersistAddsBuilder
{class Program{static void Main(string[] args){string connString = @"server=.;integrated security=true;database =northwind";string qry = @"select * from employees where country='UK'";SqlConnection conn = new SqlConnection(connString);try{SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = new SqlCommand(qry, conn);SqlCommandBuilder cb = new SqlCommandBuilder(da);DataSet ds = new DataSet();da.Fill(ds, "employees");DataTable dt = ds.Tables["employees"];DataRow newRow = dt.NewRow();newRow["firstname"] = "Roy";newRow["lastname"] = "Beatty";newRow["titleofcourtesy"] = "Sir";newRow["city"] = "Birmingham";newRow["country"] = "UK";dt.Rows.Add(newRow);foreach (DataRow row in dt.Rows){Console.WriteLine("{0} {1} {2}", row["firstname"].ToString().PadRight(15), row["lastname"].ToString().PadLeft(25), row["city"]);}da.Update(ds, "employees");}catch (Exception e){Console.WriteLine("Error: " + e);}finally{conn.Close();}Console.ReadKey();}}
}

示例说明

最值得注意的地方并不是添加的一行代码,而是该代码所替代的代码,下面的一行语句:

使下面的所有代码变得多余:

string ins = @"insert into employees(firstname,lastname,titleofcourtesy,city,country)
            values(@firstname,@lastname,@titleofcourtesy,@city,@country)";

      

SqlCommand cmd = new SqlCommand(ins, conn);

cmd.Parameters.Add("@firstname", SqlDbType.NVarChar, 10, "firstname");
                cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 20, "lastname");
                cmd.Parameters.Add("@titleofcourtesy", SqlDbType.NVarChar, 25, "titleofcourtesy");
                cmd.Parameters.Add("@city", SqlDbType.NVarChar, 15, "city");
                cmd.Parameters.Add("@country", SqlDbType.NVarChar, 15, "country");
                da.InsertCommand = cmd;

显然,使用命令构建器比手动编写SQL更好,但是它们只能处理一个表,底层的数据库表必须有主键或唯一键。另外,数据适配器的SelectCommand属性必须有一个包含主键的查询。

转载于:https://www.cnblogs.com/tanding/archive/2012/07/23/2604730.html

使用SqlCommandBuilder相关推荐

  1. SqlDataAdapter和SqlCommandBuilder添加数据

    using System; using System.Data; using System.Data.SqlClient; //SqlDataAdapter网站:http://msdn.microso ...

  2. 对SqlCommandBuilder类理解

    在实现数据的批量导入导出,具体代码如下: 1 OpenFileDialog ofd = new OpenFileDialog(); 2 if (ofd.ShowDialog() == DialogRe ...

  3. SqlCommandBuilder

    SqlCommandBuilder 作用:c#中用来批量更新数据库 用法:一般和adapter结合使用. 例: SqlConnection conn = new SqlConnection(strCo ...

  4. SqlDataAdapter和SqlCommandBuilder删除数据

    using System; using System.Data; using System.Data.SqlClient;//SqlDataAdapter网站:http://msdn.microsof ...

  5. SqlcommandBuilder Sqlcommand sqldataAdapter DataSet DataTable

    SqlcommandBuilder:创建SQLCOMMAND对象 OleDbCommandBuilder用于 OleDbCommandBuilder cmdb=new OleDbCommandBuil ...

  6. 深入.NET DataTable

    1.ADO.NET相关对象一句话介绍 1)DataAdapter: DataAdapter实际是一个SQL语句集合,因为对Database的操作最终需要归结到SQL语句. 2)Dataset: Dat ...

  7. 在DataTable中更新、删除数据

    在DataTable中选择记录 /*在DataTable中选择记录*//* 向DataTable中插入记录如上,更新和删除如下:* ----但是在更新和删除前,首先要找出要更新和删除的记录.* 一种方 ...

  8. 浅析ado.net获取数据库元数据信息

    写这个文章源于早先对ADO.Net获取数据库元数据上的认识,去年我在阅读ADO.Net Core Reference的时候曾经注意过DataSet的FillSchema的这个方法.这方面,在我之前的随 ...

  9. 将Excel文件数据库导入SQL Server

    将Excel文件数据库导入SQL Server的三种方案//方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server openFileDialog = n ...

最新文章

  1. base64编码 vba_VB VBA ASP 可通用的基于Base64进行加密和解密的函数
  2. Java获取本地ip方法_Java获取本地IP方法详解
  3. PC端页面调用QQ聊天 - 封装篇
  4. 解决easyui textarea 值不显示及获取textarea的值
  5. 操作系统在内存中的位置
  6. mysql 出现ERROR 2002 (HY000): ....错误通用解决方法
  7. 如何在ArcGIS中由县级数据生成省级数据?
  8. 好程序员web前端培训分享JavaScript框架
  9. 5.5.49mysql
  10. android压力测试命令monkey详解,android压力测试命令monkey详解(示例代码)
  11. IDEA使用AVD Manager创建AVD
  12. 名帖119 文徵明 小楷《摩诃般若波罗蜜多心经》
  13. 第十四届校模拟赛第一期(一)
  14. Python大学计算机程序设计-通讯录管理系统
  15. BurpSuite配置抓取HTTPS数据包
  16. 固态硬盘颗粒:SLC/MLC/TLC有什么区别?
  17. PCL提取3D点云模型特征(3.0 FPFH快速点特征直方图)附完整代码
  18. C语言程序——求学生总成绩和平均成绩
  19. 英雄远征Erlang源码分析(8)-怪物相关
  20. iOS代码混淆--最终版

热门文章

  1. Problem01 不死神兔
  2. 基本卷-动态卷性能测评(未完待续)
  3. 【转载】安卓开发者在使用deepin15.4时可能会遇到的问题
  4. iOS---------- MBProgressHUD (1.0.0)的变动
  5. javascript 类型及类型判断
  6. HDU 3435 KM A new Graph Game
  7. springboot项目 tomcat8.x 频繁宕机 原因分析
  8. Spring事务管理详解_基本原理_事务管理方式
  9. python中popen的用法_python中的subprocess.Popen()使用
  10. centos7 zookeeper3.5.6单点部署