博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SqlCommandBuilder
阅读量:5126 次
发布时间:2019-06-13

本文共 2465 字,大约阅读时间需要 8 分钟。

使用命令构造器添加行

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

你可能感兴趣的文章
git 版本库之间的依赖
查看>>
仓库服务端软件artifactory
查看>>
Vulkan(0)搭建环境-清空窗口
查看>>
Vulkan(1)用apispec生成Vulkan库
查看>>
python全栈开发中级班全程笔记(第三模块、第一章(1.面向对象基础))
查看>>
python全栈开发中级班全程笔记(第三模块、第一章(多态、封装、反射、内置方法、元类、作业))...
查看>>
python全栈开发中级班全程笔记(第三模块、第二章(网络编程))
查看>>
30分钟部署一个Kubernetes集群
查看>>
gitlab部署
查看>>
gitlab数据迁移
查看>>
samba安装配置
查看>>
redis数据备份还原
查看>>
centos7 dns(bind)安装配置
查看>>
Keepalived+LVS+nginx搭建nginx高可用集群
查看>>
CAA调试
查看>>
BZOJ3123[Sdoi2013]森林——主席树+LCA+启发式合并
查看>>
BZOJ3523[Poi2014]Bricks——贪心+堆
查看>>
Android 二维码 生成和识别(附Demo源码)
查看>>
查询sql server占用内存的情况
查看>>
react-01
查看>>