前言

参考:https://www.jb51.cc/mssql/76911.html

在mssql中,在记录不存在时插入记录,如果存在则不执行操作

数据库

相关语句

--创建表
CREATE TABLE Users
(
UserId VARCHAR(50) PRIMARY KEY,
UserName NVARCHAR(20),
Age INT NOT NULL
) --直接插入
INSERT INTO Users VALUES('12138','Wen',2) --经sql判断的插入
INSERT INTO Users
SELECT '12138' UserId ,'Wen' UserName,2 Age
FROM(SELECT '12138' UserId ,'Wen' UserName,2 Age) A
LEFT JOIN Users B
ON B.UserId=A.UserId
WHERE B.UserId IS NULL --清空表数据
TRUNCATE TABLE Users

控制台程序测试

sql帮助类

 1 using System;
2 using System.Data;
3 using System.Data.SqlClient;
4
5 namespace ConTest.Core
6 {
7 public class SqlDBHelper
8 {
9 /// <summary>
10 /// 执行查询语句,返回DataSet
11 /// </summary>
12 /// <param name="sSQLString">查询语句</param>
13 /// <returns>DataSet</returns>
14 public static DataSet Query(string sDBConnectionString, string sSQLString)
15 {
16 using (SqlConnection connection = new SqlConnection(sDBConnectionString))
17 {
18 DataSet ds = new DataSet();
19 try
20 {
21 connection.Open();
22 SqlDataAdapter command = new SqlDataAdapter(sSQLString, connection);
23 command.Fill(ds, "ds");
24 }
25 catch (System.Data.SqlClient.SqlException ex)
26 {
27 throw new Exception(ex.Message);
28 }
29 return ds;
30 }
31 }
32
33 /// <summary>
34 /// 执行SQL语句,返回影响的记录数
35 /// </summary>
36 /// <param name="SQLString">SQL语句</param>
37 /// <returns>影响的记录数</returns>
38 public static int ExecuteSql(string sDBConnectionString, string SQLString)
39 {
40 using (SqlConnection connection = new SqlConnection(sDBConnectionString))
41 {
42 using (SqlCommand cmd = new SqlCommand(SQLString, connection))
43 {
44 try
45 {
46 connection.Open();
47 int rows = cmd.ExecuteNonQuery();
48 return rows;
49 }
50 catch (System.Data.SqlClient.SqlException E)
51 {
52 connection.Close();
53 throw new Exception(E.Message);
54 }
55 }
56 }
57 }
58 }
59 }

控制台程序

 1 using ConTest.Core;
2 using System;
3 using System.Text;
4 using System.Threading.Tasks;
5
6 namespace ConTest
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 StringBuilder sbSql = new StringBuilder();
13
14 Parallel.For(0, 10, item =>
15 {
16 try
17 {
18 //直接插入
19 //var i = SqlDBHelper.ExecuteSql(ConstValues.SqlServerDBStr, $" INSERT INTO Users VALUES('12138','Wen',2); ");
20
21 //经sql判断的插入
22 var i = SqlDBHelper.ExecuteSql(ConstValues.SqlServerDBStr,
23 @"
24 INSERT INTO Users
25 SELECT '12138' UserId ,'Wen' UserName,2 Age
26 FROM(SELECT '12138' UserId ,'Wen' UserName,2 Age) A
27 LEFT JOIN Users B
28 ON B.UserId=A.UserId
29 WHERE B.UserId IS NULL
30 ");
31
32 sbSql.AppendLine($"True,Line:{i}");
33 }
34 catch (Exception ex)
35 {
36 sbSql.AppendLine($"False,{ex.Message}");
37 }
38 });
39
40 Console.WriteLine(sbSql.ToString());
41
42 Console.Read();
43 }
44 }
45 }

静态值

 1 namespace ConTest.Core
2 {
3 /// <summary>
4 /// 静态值
5 /// </summary>
6 public class ConstValues
7 {
8 /// <summary>
9 /// 数据库连接字符串
10 /// </summary>
11 public static string SqlServerDBStr = "data source=.;Initial Catalog=ConTest;integrated security=true;";
12 }
13 }

运行结果

直接插入

经sql判断

结语

实现标题描述

mssql不存在便插入存在不执行操作的更多相关文章

  1. 关于mysql安装后在客户端cmd插入语句无法执行的问题

    关于mysql安装后在客户端cmd插入语句无法执行的问题 因为windows cmd默认字符集是gbk,当character_set_client=utf8时,cmd中出现中文会报错:characte ...

  2. 使用twisted将mysql插入变成异步执行

    python 异步MySQL存库   对于异步框架而言,这些延迟是无法接受的.因此, Twisted 提供了 twisted.enterprise.adbapi, 遵循DB-API 2.0协议的一个异 ...

  3. 【spring data jpa】使用spring data jpa时,关于service层一个方法中进行【删除】和【插入】两种操作在同一个事务内处理

    场景: 现在有这么一个情况,就是在service中提供的一个方法是先将符合条件的数据全部删除,然后再将新的条件全部插入数据库中 这个场景需要保证service中执行两步 1.删除 2.插入 这两步自然 ...

  4. 一个电商项目的Web服务化改造6:单元测试4步走,构造数据、执行操作、断言、回滚

      最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.     有点挑战,做完了,会有很大进步. 单元测试,在很早之前的文章已经介绍过.     可以在这里看到相关的 ...

  5. C# 对包含文件或目录路径信息的 System.String 实例执行操作

    在字符串操作中有一类比较特殊的操作,就是对包含文件或目录路径信息的 System.String 实例执行操作.比如根据一个表示路径的字符串获取其代表的文件名称.文件夹路径.文件扩展名等.在很多时候,我 ...

  6. [转]js中confirm实现执行操作前弹出确认框的方法

    原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在 ...

  7. 利用Fiddler修改请求信息通过Web API执行操作(Action)实例

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复261或者20170724可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  8. php定时执行操作及ob_flush()与flush()的使用

    版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/qq_38125058 一: 每隔30s执行一次,将字符串写入文件 // 30秒执行一次 ignore_ ...

  9. dotnetcore ef 调用多个数据库时用户命令执行操作报错

    dotnetcore ef 调用多个数据库时用户命令执行操作报错 1.多个DbContext 时报错: 报错: More than one DbContext was found. Specify w ...

随机推荐

  1. Java设计模式——观察者模式的灵活应用

    灵感来源于一个猪队友给我的题目 看到这个,我抓住的关键字是:任何子任务失败,要通知所有子任务执行取消逻辑. 这不就是消息广播吗?观察者模式! 干活 首先是收听者 package com.example ...

  2. 电脑adb命令给智能电视安装APK

    配置环境 1.电脑需要配置好adb系统环境 具体操作较复杂,请自行百度. 2.电视打开adb命令 在电视的关于界面通过遥控器「上上下下左右左右」进入工厂模式,在「高级设置」-「其他」中的「adb开关」 ...

  3. CentOS7.X 下安装MySQL8.0(附文件)

    这是64位的安装包.如果需要32位的可以去官网下载哦.步骤一样 1 获取安装资源包 mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar 链接: https://pan.b ...

  4. LeetCode双周赛#33 题解

    5480. 可以到达所有点的最少点数目 #贪心 题目链接 题意 给定有向无环图,编号从0到n-1,一个边集数组edges(表示从某个顶点到另一顶点的有向边),现要找到最小的顶点集合,使得从这些点出发, ...

  5. idea2020安装破解教程

    申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用 不花钱 的方式 IDEA 2020.2 激活到 2089 年 idea官网下载安装包:https:/ ...

  6. Spring Boot 使用 XXL-JOB

    一.配置部署调度中心 1.1 下载源码 https://github.com/xuxueli/xxl-job 1.2 数据库初始化 执行 /xxl-job/doc/db/tables_xxl_job. ...

  7. 自学linux——20.Samba服务器的搭建

    Samba服务器的搭建 一.Samba的认识 1.Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件 2.Samba不仅用于Linux与windows系统直接的文件共享和打印共 ...

  8. Python怎么控制将一个整数输出成指定长的十六进制数?

    使用format方法,在格式控制中进行控制,具体控制参数为: {:#016X} 其中: 大括号表示该处从后面的format的参数中取值 冒号表示格式控制开始 0表示长度不足16位补0 16表示长度 X ...

  9. 效率神器-uTools推荐和使用

    提高办公开发效率...非常好用  功能很多很全,官网:https://u.tools/ 文档:https://u.tools/docs/guide/about-uTools.html

  10. 第 6篇 Scrum 冲刺博客

    一.站立式会议 1.站立式会议照片 2.昨天已完成的工作 完成了在数据库中对商品信息的查询 职工管理页面 3.今天计划完成的工作 完成对商品信息的分析 计划分析并编写职工信息模块代码 4.工作中遇到的 ...