使用SqlCommandBuilder
使用命令构造器添加行
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相关推荐
- SqlDataAdapter和SqlCommandBuilder添加数据
using System; using System.Data; using System.Data.SqlClient; //SqlDataAdapter网站:http://msdn.microso ...
- 对SqlCommandBuilder类理解
在实现数据的批量导入导出,具体代码如下: 1 OpenFileDialog ofd = new OpenFileDialog(); 2 if (ofd.ShowDialog() == DialogRe ...
- SqlCommandBuilder
SqlCommandBuilder 作用:c#中用来批量更新数据库 用法:一般和adapter结合使用. 例: SqlConnection conn = new SqlConnection(strCo ...
- SqlDataAdapter和SqlCommandBuilder删除数据
using System; using System.Data; using System.Data.SqlClient;//SqlDataAdapter网站:http://msdn.microsof ...
- SqlcommandBuilder Sqlcommand sqldataAdapter DataSet DataTable
SqlcommandBuilder:创建SQLCOMMAND对象 OleDbCommandBuilder用于 OleDbCommandBuilder cmdb=new OleDbCommandBuil ...
- 深入.NET DataTable
1.ADO.NET相关对象一句话介绍 1)DataAdapter: DataAdapter实际是一个SQL语句集合,因为对Database的操作最终需要归结到SQL语句. 2)Dataset: Dat ...
- 在DataTable中更新、删除数据
在DataTable中选择记录 /*在DataTable中选择记录*//* 向DataTable中插入记录如上,更新和删除如下:* ----但是在更新和删除前,首先要找出要更新和删除的记录.* 一种方 ...
- 浅析ado.net获取数据库元数据信息
写这个文章源于早先对ADO.Net获取数据库元数据上的认识,去年我在阅读ADO.Net Core Reference的时候曾经注意过DataSet的FillSchema的这个方法.这方面,在我之前的随 ...
- 将Excel文件数据库导入SQL Server
将Excel文件数据库导入SQL Server的三种方案//方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server openFileDialog = n ...
最新文章
- base64编码 vba_VB VBA ASP 可通用的基于Base64进行加密和解密的函数
- Java获取本地ip方法_Java获取本地IP方法详解
- PC端页面调用QQ聊天 - 封装篇
- 解决easyui textarea 值不显示及获取textarea的值
- 操作系统在内存中的位置
- mysql 出现ERROR 2002 (HY000): ....错误通用解决方法
- 如何在ArcGIS中由县级数据生成省级数据?
- 好程序员web前端培训分享JavaScript框架
- 5.5.49mysql
- android压力测试命令monkey详解,android压力测试命令monkey详解(示例代码)
- IDEA使用AVD Manager创建AVD
- 名帖119 文徵明 小楷《摩诃般若波罗蜜多心经》
- 第十四届校模拟赛第一期(一)
- Python大学计算机程序设计-通讯录管理系统
- BurpSuite配置抓取HTTPS数据包
- 固态硬盘颗粒:SLC/MLC/TLC有什么区别?
- PCL提取3D点云模型特征(3.0 FPFH快速点特征直方图)附完整代码
- C语言程序——求学生总成绩和平均成绩
- 英雄远征Erlang源码分析(8)-怪物相关
- iOS代码混淆--最终版
热门文章
- Problem01 不死神兔
- 基本卷-动态卷性能测评(未完待续)
- 【转载】安卓开发者在使用deepin15.4时可能会遇到的问题
- iOS---------- MBProgressHUD (1.0.0)的变动
- javascript 类型及类型判断
- HDU 3435 KM A new Graph Game
- springboot项目 tomcat8.x 频繁宕机 原因分析
- Spring事务管理详解_基本原理_事务管理方式
- python中popen的用法_python中的subprocess.Popen()使用
- centos7 zookeeper3.5.6单点部署