说明:以下是我近两年年来开发中最常用的C#操作sql server数据库访问类,对初学者非常有用,容易扩展,支持多库操作,多研究研究,有什么问题欢迎留言

当前环境为 C#  .NET CORE 3.0

首先在appsettings.json文件中配置日志保存路径,MSSQL 数据库连接串,可以配置多个,也可以在launchSettings.json文件中配置,编写相应的代码,可采用注入方式调用,也可写作基本类调用,当前演示基本类操作

示例:

代码:

  "AllowedHosts": "*",
"ConnectionStrings": {
"SqlHost": "IP",
"SqlAdminName": "账号",
"SqlAdminPswd": "密码",
"SqlCatalogProFix": "数据库"
},
"ConnectionStrings2": {
"SqlHost": "IP",
"SqlAdminName": "账号",
"SqlAdminPswd": "密码",
"SqlCatalogProFix": "数据库"
},
"Executionlog": "", //系统执行日志路劲
"UPFilepath": "", //图片上传路径
"DWFilepath": {
"Ptpip": "http://",
"Ftpport": "端口"
}

然后新建一个SQLHelp类,如果是分层架构,则在DLL接口后面添加SQLHelp层,由Service层调用,简单开发流程为:API接口→SQLHelp类,在API程序里面使用 SQLHelp ht = new SQLHelp();语法即可在下面的程序中调用,如果是分层架构:

分层的程序一般为三层或三层以上,如三层架构:UI→API→BLL→DLL→Model,像我自己常用的,则为:UI→API→BLL→IService→Service→DL基类,如SQLSuggger/EF/SQLHelp,这里演示为最简单的:

调用代码:

using CommAPP.HelpDoc;
using EvaluationSystem.Gettoken;
using EvaluationSystem.HelpTool;
using EvaluationSystem.HelpTool.SysHelp;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks; namespace EvaluationSystem.Controllers.WMSShipment
{
/// <summary>
///曾经沧海难为水 除却巫山不是云
///取次花丛懒回顾 半缘修道半缘君
/// --Hilton 基础信息接口
/// 所有方法必须再次检测用户是否存在,若不存在则跳出action(方法),不允许执行任何操作,防止网站被攻击,数据泄露或被破坏,在进程序前已由JWT拦截校验,相关技术自己去了解
/// </summary> //[MyNoAuthentication] //不启用验证 public class ****Controller : Controller
{
public IActionResult Index()
{
return View();
}
SQLHelp ht = new SQLHelp();
SYSHelpTool st = new SYSHelpTool(); [HttpPost]
public dynamic ****data([FromBody] dynamic Rdata)//添加
{
var outData = new Dictionary<string, object>();
try
{
string jsondata = Rdata.ToString();
var dict1 = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsondata);
string data = dict1.ContainsKey("data") ? dict1["data"].ToString() : "";
var dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(data);
string CreateUserID = HttpContext.Request.Headers["*****"].ToString() ?? "";
CreateUserID = st.CommonAESDecrypt(CreateUserID); //登录用户 string PackageNo = dict.ContainsKey("PackageNo") ? dict["PackageNo"].ToString() : "";
string PackageTypeID = dict.ContainsKey("PackageTypeID") ? dict["PackageTypeID"].ToString() : "";
string PackageName = dict.ContainsKey("PackageName") ? dict["PackageName"].ToString() : "";
string PackageSize = dict.ContainsKey("PackageSize") ? dict["PackageSize"].ToString() : "";
string PackageQty = dict.ContainsKey("PackageQty") ? dict["PackageQty"].ToString() : "0";
string Standardcost = dict.ContainsKey("Standardcost") ? dict["Standardcost"].ToString() : "0";
string LotStatus = dict.ContainsKey("LotStatus") ? dict["LotStatus"].ToString() : "1";
string StockID = dict.ContainsKey("StockID") ? dict["StockID"].ToString() : ""; if (string.IsNullOrWhiteSpace(CreateUserID))
{
outData = new Dictionary<string, object>
{
{ "return_data","" },
{ "return_codes", "-1" },
{ "return_msg", "用户有误!" }
};
return outData;
}
if (string.IsNullOrWhiteSpace(PackageNo))
{
outData = new Dictionary<string, object>
{
{ "return_data","" },
{ "return_codes", "-1" },
{ "return_msg", "耗材编码为空!" }
};
return outData;
} string upsql = "SQL语句*****WHERE PackageNo=@PackageNo";
Dictionary<string, object> dic2 = new Dictionary<string, object>(); dic2.Add("PackageNo", 表名);
DataTable ds = ht.SelectT(dic2, upsql);
var Ispectdatas1 = ht.QueryData(ds); if (Ispectdatas1.Count > 0)
{
outData = new Dictionary<string, object>
{
{ "return_data","" },
{ "return_codes", "-1" },
{ "return_msg", "已存在*****,请勿重复添加!" }
};
return outData;
} Dictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("PackageNo", PackageNo);
dic.Add("PackageTypeID", PackageTypeID);
dic.Add("PackageName", PackageName);
dic.Add("PackageSize", PackageSize);
dic.Add("Standardcost", Standardcost);
dic.Add("PackageQty", PackageQty);
dic.Add("LotStatus", LotStatus);
dic.Add("StockID", StockID);
dic.Add("ModifyUserID", CreateUserID);
dic.Add("ModifyDate", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
dic.Add("CreateUserID", CreateUserID); DataTable dt = new DataTable();
dt = ht.AddDataTable(dic, "PackageInfo");
var Ispectdatas2 = ht.QueryData(dt);
if (Ispectdatas2.Count > 0)
{
outData = new Dictionary<string, object>
{
{ "return_data",""},
{ "return_codes", "0" },
{ "return_msg", "添加成功!" }
};
}
else
{
outData = new Dictionary<string, object>
{
{ "return_data",""},
{ "return_codes", "0" },
{ "return_msg", "添加失败!" }
};
} }
catch (Exception ex)
{
outData = new Dictionary<string, object>
{
{ "return_data","" },
{ "return_codes", "-2" },
{ "return_msg", "添加失败,系统错误!"}
};
}
return outData;
} }

如果是多层架构,则如下:

本章介绍SQL Help类的使用,下一章介绍SQL Help基类的编写

今日分享结束

能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识

基于C# 开发的SOL SERVER 操作数据库类(SQLHelp)的更多相关文章

  1. 非常不错的ASP操作数据库类,支持多数据库MSSQL,ACCESS,ORACLE,MYSQL等

    可同时操作多个不同类型的数据库. 完全不用考虑数据类型的差别,再也不用想字符型字段加不加单引号. 调用非常简单,对数据库的主要操作一般只需要一行代码. 支持mssql事务回滚. 可自动生成和输出sql ...

  2. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  3. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  4. Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack

    一.发现问题 先看两种方法插入数据 public void save(Person p){ SQLiteDatabase db = dbHelper.getWritableDatabase(); db ...

  5. PHP操作数据库类

    <?php /** * 功能: 数据库操作类 . * 作者: 赵铭哲 * 日期: 2016-05-23 * 时间: 9:43 */ namespace ZH\DataBase; use \Exc ...

  6. ecshop操作数据库类

    ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小.另外,当网站 ...

  7. C++ 操作数据库类

    #pragma once #include <string> #include <windows.h> #include <algorithm> #include ...

  8. Python操作数据库类 Oracle、Sqlserver、PostgreSQL

    我在工作中经常使用Python,特点很明显,轻量,效率还不错,尤其在维护或者自动化方面. 下面是我使用到的访问数据库(Oracle.Sqlserver.PostgreSQL)的公共类. 一.Oracl ...

  9. mybatis 操作数据库(05)

    类型转换.动态排序,查询接口与mapper对应关系说明及其注意事项 一.MyBatis 自带写常见类型转换器.例如:java 类中 String 对应 mySQL中的varchar 二.自定义类型转换 ...

  10. Atitit  基于meta的orm,提升加速数据库相关应用的开发

    Atitit  基于meta的orm,提升加速数据库相关应用的开发 1.1. Overview概论1 1.2. Function & Feature功能特性1 1.2.1. meta api2 ...

随机推荐

  1. python入门教程之十五获取对象属性的几种方法

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...

  2. QtDesigner安装

    QtDesigner简单介绍 Qtdesigner是Python设计里面一个非常实用的工具,使得人们编写qt界面可以不仅仅是使用纯代码,而可以在可视化的基础上设置,非常方便. QtDesigner安装 ...

  3. [Linux/Bash/Shell]curl & wget

    1 参考文献 curl 的用法指南 - 阮一峰 curl网站开发指南 - 阮一峰 Curl Cookbook https://curl.haxx.se/ linux curl 命令详解,以及实例 2 ...

  4. [Wechat]概念辨析:微信的生态平台/运管平台

    0 引言 微信的各类XX社区.XX文档.XX平台,实在是太多,让人眼花缭乱.必须得理一理了. 1 微信公众平台 https://mp.weixin.qq.com/ 即 微信公众号(小程序 / 订阅号 ...

  5. java递归算法之老鼠找路

    (上图出自B站韩顺平教育) 从上图的(1,1)处,寻找到(6,5)处的路线,红色格子是障碍 public class MiGong { public static void main(String[] ...

  6. Marior去除边距和迭代内容矫正用于自然文档矫正

    一.简要介绍 本文简要介绍了论文" Marior: Margin Removal and Iterative Content Rectification for Document Dewar ...

  7. Spring之丐版IOC实现

    文章目录 IOC控制反转 依赖注入 Bean的自动装配方式 丐版IOC实现 BeanDefinition.java ResourceLoader.java BeanRegister.java Bean ...

  8. shell自动化脚本,启动、停止应用程序

    #!/usr/bin/env bash # 常量初始化 set_runtime_vars(){ # 日期时间 Now_Date=`date +"%Y-%m-%d %H:%M:%S" ...

  9. #Powerbi 利用视觉对象着色地图,制作数据地图

    日常工作中,有时我们会遇到需要地图来展示我们的数据场景,利用POWERBI,我们可以快速的制作自己的业务地图. Powerbi自带了三大地图,今天我们用到的是形状地图. 步骤讲解: 第一步:下载对应的 ...

  10. Linux 升级sudo到 1.9.12p1,解决漏洞CVE-2022-43995

    一.查看sudo版本 sudo -V 二.下载最新版本到服务器并解压 wget https://www.sudo.ws/dist/sudo-1.9.12p1.tar.gz && tar ...