SQL批量添加,更新,删除

这里说的是关于SQL的批量操作数据。

需要准备:

三层框架:利用 动软代码生成器(可以快速生成增删改查) 生成三层 Model,BLL,Dal

DbHelpeSQL.cs    ------->SQL操作的辅助类

CommandInfo.cs  -------->一个命令类

事务的方法:

   /// <summary>
        /// 执行多条SQL语句,实现数据库事务。
        /// </summary>
        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
        public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    SqlCommand cmd = new SqlCommand();
                    try
                    { int count = 0;
                        //循环
                        foreach (CommandInfo myDE in cmdList)
                        {
                            string cmdText = myDE.CommandText;
                            SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;
                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
                            {
                                if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
                                {
                                    trans.Rollback();
                                    return 0;
                                }

                                object obj = cmd.ExecuteScalar();
                                bool isHave = false;
                                if (obj == null && obj == DBNull.Value)
                                {
                                    isHave = false;
                                }
                                isHave = Convert.ToInt32(obj) > 0;

                                if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
                                {
                                    trans.Rollback();
                                    return 0;
                                }
                                if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
                                {
                                    trans.Rollback();
                                    return 0;
                                }
                                continue;
                            }
                            int val = cmd.ExecuteNonQuery();
                            count += val;
                            if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
                            {
                                trans.Rollback();
                                return 0;
                            }
                            cmd.Parameters.Clear();
                        }
                        trans.Commit();
                        return count;
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }
        }

①批量删除

这个使用一条SQL语句就可以完成,所以不存在批量不批量的问题

delete TableName where  id   in(条件)    条件格式: 1,2,3,4

例子:就是一个简单的User表      列:  ID,Name.Age,Sex

②批量添加        我们使用的时候,自己手机改一下就可以了,符合自己的表

        /// <summary>
        /// 添加多条数据
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public int Add(List<User> userList)
        {
            List<CommandInfo> strsql = new List<CommandInfo>();
            foreach (User item in userList)
            {
                CommandInfo info = new CommandInfo();
                StringBuilder strSql = new StringBuilder();
                strSql.Append("insert into User(");
                strSql.Append("Name,Age,Sex)");
                strSql.Append(" values (");
                strSql.Append("@Name,@Age,@Sex)");
                info.CommandText = strSql.ToString();  //SQL语句
                SqlParameter[] parameters = {
                    new SqlParameter("@Name", SqlDbType.NVarChar,500),
                    new SqlParameter("@Age", SqlDbType.Int,4),
                    new SqlParameter("@Sex", SqlDbType.Int,4)};
                parameters[0].Value = item.Name;
                parameters[1].Value = item.Age;
                parameters[2].Value = item.Sex;
                info.Parameters = parameters;  //参数

                strsql.Add(info);    //把多条SQL语句添加进去,一起执行
            }
            int num = DbHelperSQL.ExecuteSqlTran(strsql); //执行事务  一定是要执行事务,多条数据的时候要么全部成功要么失败
            if (num > 0)
            {
                return num;
            }
            else
            {
                return 0;
            }
        }

③批量更新            类似更新,把SQL语句换成更新的就可以了

  /// <summary>
        /// 更新多条数据
        /// </summary>
        public bool Update(List<User> userList)
        {
            List<CommandInfo> strsql = new List<CommandInfo>();
            CommandInfo info = new CommandInfo();
            StringBuilder strSql = new StringBuilder();
            foreach (User item in userList)
            {
                strSql.Append("update User set ");
                strSql.Append("[email protected],");
                strSql.Append("[email protected],");
                strSql.Append("[email protected],");
                strSql.Append(" where [email protected]");
                info.CommandText = strSql.ToString();
                SqlParameter[] parameters = {
                    new SqlParameter("@Name", SqlDbType.NVarchar,500),
                    new SqlParameter("@Age", SqlDbType.Int,4),
                    new SqlParameter("@Sex", SqlDbType.Int,4),                  new SqlParameter("@ID", SqlDbType.Int,4)};

                parameters[0].Value = item.Name;
                parameters[1].Value = item.Age;
                parameters[2].Value = item.Sex;
                parameters[3].Value = item.ID;
                info.Parameters = parameters;
                strsql.Add(info);
            }
            int rows = DbHelperSQL.ExecuteSqlTran(strsql);
            if (rows > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

批量数据,这个格式: ( 现实的需求里面可能批量不止是做一种操作,可能添加,删除,更新一起做的)

List<CommandInfo> strsql = new List<CommandInfo>();       //头部

//第一条命令

CommandInfo info1 = new CommandInfo();
   StringBuilder strSql1 = new StringBuilder();

strSql1.Append("SQL语句,参数用@XX替代");

info1.CommandText=strSql1.ToSting();

SqlParameter[] parameters = {
   声明类型和大小SqlParameter的集合
 };

parameters[0].Value =给每个参数赋值
info1.Parameters = parameters;   //命令的参数

//第二条命令

//第三条命令   继续添加就可以了

strsql.Add(info);

int rows = DbHelperSQL.ExecuteSqlTran(strsql);   //尾部

时间: 2025-01-08 01:54:36

SQL批量添加,更新,删除的相关文章

批量添加或删除用户

========================================================================================== #!/bin/bash # if [ ! $# -eq 1 ];then echo './user.sh --add|--del' exit 1 fi case "$1" in --add) for i in {1..10} do if id user$i &>/dev/null ;then

ORACLE基本SQL语句-添加更新数据函数篇

一.添加数据 /*添加数据*/insert into STU values('stu0004','赵一',18,1,"kc0004");insert into STU(STU_ID,STU_NAME,STU_AGE,STU_SET ) values('stu0013','储十一',19,1); 说明:如果不指定将数据添加到那个字段,那么此时必须列出全部数据,如果列出字段,则一一对应,必须列出约束不为空的所有字段,否则报错. 二.更新数据 /*更新数据*/update STU SET S

123批量添加和删除单元格(扩展知识:设置单元格的尺寸和颜色)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UITableViewController 4 @property (strong, nonatomic) NSMutableArray *mArrDataSource; 5 6 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface Vi

Windows批量添加和删除IP

随着天气变冷了,好多小伙伴都开始变懒了,都想用最快的方式完成任务 下面给大家介绍一下Windows批量添加和删除IP的办法 (1)批量添加IP 直接在CMD下边运行下边命令. for /l %i in (2,1,254) do netsh interface ip add address "本地连接" 192.168.1.%i 255.255.255.0for /l %i in (2,1,62) do netsh interface ip add address "本地连接&

SqlServer——批量操作(批量添加,删除)

批量添加数据: 一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , firstName, city ) values(204,'haha' , 'deng' , 'shenzhen'); (如上,仅插入了一条记录) 怎样一次insert插入多条记录呢? 使用示例: insert into persons (id_p, lastname , firstName, city 

react.js 之 批量添加与删除功能

最近做的CMS需要用到批量添加图片的功能:在添加文件的容器盒子内,有两个内容,分别是:添加按钮与被添加的选择文件组件. 结构分析: 被添加的组件,我们称为:UploadQiNiuFiles(七牛文件上传组件),含一个删除当前组件的删除按钮 添加按钮的事件 被添加组件存放的容器 代码分析: 添加组件存放的容器:<div className="divBorder"> <div className="divBorder"> {addToBtn} /

ado.net + sqlserver 批量添加 更新

表结构 DROP TABLE [dbo].[Product] GO CREATE TABLE [dbo].[Product] ( [Id] varchar(36) NOT NULL , [Name] varchar(255) NOT NULL , [Price] decimal(18,4) NOT NULL ) GO ALTER TABLE [dbo].[Product] ADD PRIMARY KEY ([Id]) GO 批量添加 public static void Insert<T>(s

数据的添加更新删除

1.添加数据在添加新记录之前需要先创建一个数据库itcast,创建数据库的SQL语句如下所示:mysql> CREATE DATABASE itcast;Query OK, 1 row affected 选择使用数据库itcast,SQL语句如下:mysql> USE itcast;Database changed 在数据库中创建一个表student1_tb用于存储学生信息,创建student_tb表的SQL语句如下所示:mysql> CREATE TABLE student1_tb  

SQL语句查询 更新 删除

一.查询语句 获取数据前十条 oracle: select * from tab where rownum <= 10; sql server: select top 10 * from tab mysql: select * from tab limit 10 select * from 表名 limit m,n:从m开始,取n条 二.更新语句 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 update <表名> set <列名> = <