前言

参考: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判断

结语

实现标题描述

最新文章

  1. IntelliJ IDEA For Mac 快捷键
  2. 【CSS 杂记】
  3. Java垃圾收集学习笔记
  4. WPF 创建自定义窗体
  5. 反射类属性生成DataTable
  6. 小数量宽带用户的福音,Panabit 云计费easyradius 接口隆重发布,PA宽带计费系统
  7. hihoCoder挑战赛14 -1223
  8. FTP之主动模式vs被动模式
  9. Go语言基础(一)
  10. 汽车行业解决方案_K2助力车企实现费控/生产“端到端流程”
  11. windows下Graphviz安装及入门教程
  12. Laravel Eloquent 数据查询结果中日期的格式化
  13. POJ 3436 ACM Computer Factory 最大流,拆点 难度:1
  14. SQL注入之Sqli-labs系列第二十关(基于头部的cookie POST报错注入)
  15. django基于cors做跨域处理
  16. Cardboard Talk01 HeadTracker
  17. [ActionScript3.0] AS3利用ExternalInterface与js通信
  18. 利用python查看电脑系统信息
  19. iOS 九宫格手势密码
  20. 《JAVA多线程编程核心技术》 笔记:第七章:拾遗增补

热门文章

  1. OpenCV计算机视觉学习(12)——图像量化处理&amp;图像采样处理(K-Means聚类量化,局部马赛克处理)
  2. LeetCode周赛#209
  3. 第一次UML编程作业
  4. kafka监听出现的问题,解决和剖析
  5. Spring Cloud Alibaba 初体验(四) Sentinel
  6. 莫比乌斯反演进阶-洛谷P2257/HDU5663
  7. python核心高级学习总结4-------python实现进程通信
  8. 当你在浏览器输入一个网址(如http://www.taobao.com),按回车之后发生了什么?
  9. 没有它你的DevOps是玩不转的,你信不?
  10. WPF页面刷新