使用SqlSugar连接多个数据库(sqlserver,sqlite,mysql)

news/2024/7/8 12:17:27/文章来源:https://blog.csdn.net/u012563853/article/details/127013521

    有时候,一个项目只有一个数据库,比如只有SQLite,或者MySQL数据库,那么我们只需要使用一个固定的数据库即可。但是一个项目如果写好了,有多个用户使用,但是多个用户使用不同的数据库,这个时候,我们就需要把软件设计成可以连接多个数据库的模式,用什么数据库,就配置什么数据库即可。

本例子分别使用

sqlserver

mysql

SQLite

1.建立一个wpf程序,使用.net5

2.安装SqlSugar

3.建立HelperDB

using SqlSugar;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace SqlSugarDemo
{public static class HelperDB{public static SqlSugarClient SqlSugarClient{get{return new SqlSugarClient(new ConnectionConfig(){DbType = SetDBType(ConfigurationManager.AppSettings["DBType"]), //配置数据库类型ConnectionString = ConfigurationManager.AppSettings["ConnectionString"],  //数据库连接字符串IsAutoCloseConnection = true,//设置为true无需使用using或者Close操作,自动关闭连接,不需要手动关闭数据链接InitKeyType = InitKeyType.SystemTable//默认SystemTable, 字段信息读取, 如:该属性是不是主键,是不是标识列等等信息});}}public static DbType SetDBType(string dbType){DbType DBType;switch (dbType.ToLower()){case "sqlserver":DBType = DbType.SqlServer;break;case "sqlite":DBType = DbType.Sqlite;break;case "mysql":DBType = DbType.MySql;break;default:DBType = DbType.MySql;break;}return DBType;}}
}

4.Users实体类,这个实体类要和数据库一样的,形成一一对应的关系。

数据库

此处,我们是先有数据库,然后手动创建的实体类。也可以使用SqlSugar工具箱或者代码自动生成实体类

Db First 实体生成 - SqlSugar 5x - .NET果糖网

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace SqlSugarDemo
{public class Users{public int Id { get; set; }public string Name { get; set; }public int age { get; set; }public string aa { get; set; }public string bb { get; set; }}
}

5. MainWindow.xaml界面

<Window x:Class="SqlSugarDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:SqlSugarDemo"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Button x:Name="btn" Content="确定" Click="btn_Click" Width="100" Height="50"/></Grid>
</Window>

6.MainWindow.cs界面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace SqlSugarDemo
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void btn_Click(object sender, RoutedEventArgs e){List<Users> users = HelperDB.SqlSugarClient.Queryable<Users>().Where(c => c.Name == "张三").ToList();}}
}

7.修改App.config配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><!--<add key="DBType" value="sqlserver" /><add key="ConnectionString" value="server=192.168.20.245;uid=sa;pwd=123456;database=mysqlCodeFirst" />--><add key="DBType" value="mysql" /><add key="ConnectionString" value="server=localhost;Database=mysqlCodeFirst;Uid=root;Pwd=123456" /></appSettings>
</configuration>

8.我们开启MySQL数据库,然后进行调试,看程序的结果

数据库中表的值

9. 我们修改配置,换成SqlServer数据库

<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><add key="DBType" value="sqlserver" /><add key="ConnectionString" value="server=192.168.20.245;uid=sa;pwd=123456;database=mysqlCodeFirst" /><!--<add key="DBType" value="mysql" /><add key="ConnectionString" value="server=localhost;Database=mysqlCodeFirst;Uid=root;Pwd=123456" />--></appSettings>
</configuration>

10.启动SqlServer数据库,然后进行调试,看程序的结果

数据库中表的值

11.Sqlite数据库,需要在代码里面创建数据库,建立表,再建立数据

配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration><appSettings><!--<add key="DBType" value="sqlserver" /><add key="ConnectionString" value="server=192.168.20.245;uid=sa;pwd=123456;database=mysqlCodeFirst" />--><!--<add key="DBType" value="mysql" /><add key="ConnectionString" value="server=localhost;Database=mysqlCodeFirst;Uid=root;Pwd=123456" />--><add key="DBType" value="sqlite" /><add key="ConnectionString" value="DataBase\test.db" /></appSettings>
</configuration>

HelperDB类文件 

using Microsoft.Data.Sqlite;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace SqlSugarDemo
{public static class HelperDB{public static string DBConnectionString { get; set; } = ConfigurationManager.AppSettings["ConnectionString"];public static SqlSugarClient SqlSugarClient{get{return new SqlSugarClient(new ConnectionConfig(){DbType = SetDBType(ConfigurationManager.AppSettings["DBType"]), //配置数据库类型ConnectionString = DBConnectionString,  //数据库连接字符串IsAutoCloseConnection = true,//设置为true无需使用using或者Close操作,自动关闭连接,不需要手动关闭数据链接InitKeyType = InitKeyType.Attribute//默认SystemTable, 字段信息读取, 如:该属性是不是主键,是不是标识列等等信息});}}public static DbType SetDBType(string dbType){DbType DBType;switch (dbType.ToLower()){case "sqlserver":DBType = DbType.SqlServer;break;case "sqlite":DBType = DbType.Sqlite;DBConnectionString = @"DataSource=" + AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["ConnectionString"];//DBConnectionString = new SqliteConnectionStringBuilder()//{//    DataSource = @"E:\project\测试\SqlSugarDemo\bin\Debug\net5.0-windows\1.db" ,//    Password = "123456"  //高版本不支持密码,需要低版本//}.ToString();break;case "mysql":DBType = DbType.MySql;break;default:DBType = DbType.MySql;break;}return DBType;}}
}

MainWindow.cs文件夹

using Microsoft.Data.Sqlite;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace SqlSugarDemo
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void btn_Click(object sender, RoutedEventArgs e){HelperDB.SqlSugarClient.DbMaintenance.CreateDatabase();   //建库HelperDB.SqlSugarClient.CodeFirst.InitTables<Users>();    //建表Users users1 = new Users();users1.Id = 1;users1.Name = "张三";users1.age = 20;users1.aa = "111";users1.bb = "sqlite";HelperDB.SqlSugarClient.Insertable(users1).ExecuteCommand();  //插入数据var users = HelperDB.SqlSugarClient.Queryable<Users>().Where(c => c.Name == "张三").ToList();   //查询数据}}
}

数据库中表的值

代码调试的值 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_392023.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多测师肖sir_疑难杂症_linux中设置中文,数据库中插入中文

一、linux中如何切换出中文 讲解是Centos6.5版本 &#xff08;1&#xff09;第一步打开控制台输入安装中文输入法&#xff1a; yum install “Chinese Support” &#xff08;2&#xff09;查清自己目前的系统版本&#xff1a;cat /etc/issue 查看系统版本&#xff1a; 下载好…

操作系统漏洞利用思路

目录 前言&#xff1a; &#xff08;一&#xff09;漏洞发现工具 0x01、Goby 0x02、Nmap 1、vuln 2、vulscan 0x03 Nessus &#xff08;二&#xff09;漏洞利用 0x01、框架利用 0x02、单点EXP 0x03 搜索文章 &#xff08;三&#xff09;修补 1、打上补丁 2、关闭…

node.js基于微信小程序的外卖订餐系统 uniapp 小程序

美食是人类永恒的话题&#xff0c;无论是在古代还是现代人们对美食都有一种非常的热爱在里面&#xff0c;但是随着时代的发展&#xff0c;人们可能没有更多的时间去研究美食&#xff0c;很多时候人们在下班或者放学之后更希望通过网络来进行订餐&#xff0c;为此我开发了本基于…

顺序栈和链式栈(C++实现)

数据结构&#xff08;面向对象方法与C语言描述&#xff09;&#xff08;第2版&#xff09;顺序栈和链式栈内容整理 栈 栈&#xff08;stack&#xff09;可定义为只允许在表的末端进行插入和删除的线性表。允许插入和删除的一端叫做栈顶&#xff08;top&#xff09;&#xff0…

学习:网络基础知识 HTTP协议之请求报文

HTTP协议 和 安全版 HTTPS协议 HTTP(Hyper Text Transfer Protocol)超文本传输协议 HTTP协议 是基于TCP协议 默认端口是80 功能:用来规定客户端和服务端的数据传输格式 特点:基于请求与响应模式的、无状态、无连接的应用层协议 示例:粉色部分是请求 紫色是响应部分 HTTP请…

Pro09丨高频波动率RSJ与成交量因子迭代升级

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 大家好&#xff0c;今天我们分享Pro系列第9篇量化策略及内容说明。 在2021年7月中&#xff0c;某开源平台发布一个研报策略复现文章&#xff0c;而后大家象征性的积极讨论了一番&#xf…

大裁员时代,我们究竟该如何提升自己?

我以为进大厂可以逃过 35 岁的坎儿&#xff0c;结果还没到 35 呢就遇上了大裁员。。。被裁的那一个月&#xff0c;我拿着公司给的 2N 在家躺了大半个月&#xff0c;刚开始是不甘&#xff0c;到后面每个月一万多的房贷催着我不得不重新审视自己&#xff0c;随后踏上了海投之路。…

贤鱼的刷题日常--P2671 [NOIP2015 普及组] 求和

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;学会求和题目 ✅创作者&#xff1a;贤鱼 &#x1f389;个人主页&#xff1a;贤鱼的个人主页 &#x1f525;专栏系列&#xff1a;c 求和题目[NOIP2015 普及组] 求和题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例…

电脑屏幕监控,员工行为监控,上网行为监控解决方案

本文镜像&#xff1a;https://linkpi.cn/archives/1612 本文链接&#xff1a;https://blog.csdn.net/weixin_45326556/article/details/127050574 电脑屏幕监控,员工行为监控,上网行为监控解决方案1. 背景2. 设备清单3. 设备连接示意图3.1 灵派编码器 USB摄像头方式3.2 灵派编…

C++运算符重载

运算符重载引入一.运算符重载是什么二.运算符重载的格式三.部分运算符重载的实现3.1 简单‘ ’ ‘ - ’ ‘ * ’运算符重载3.2 ,- - 运算符3.3 运算符3.4 <<&#xff0c;>>运算符四.运算符重载注意事项五.运算符重载的限制六.MyString的简单实现引入 对于基本类型…

java中的IO流

IO流1、File类1.1 获取文件或目录信息1.2 操作文件1.3 操作目录1.4 案例&#xff1a;递归列出目录的下一级1.5 案例&#xff1a;递归列出目录下的所有Java源文件2、IO流的分类和设计2.1 输出纯文本数据2.2 读取纯文本数据2.3 按行读取2.4 复制文件基本版2.5 复制文件提升效率版…

硬件基础:电路基础知识

电路的研究方式&#xff1a;从电路模型出发&#xff0c;研究电路基本理论、分析方法以及工程技术中典型类电路的特点和规律。 电路的四类知识 基础知识 电路模型&#xff0c;电路基本物理量&#xff0c;电路基本元件&#xff0c;基尔霍夫定律&#xff0c;磁路的基础知识。。。工…

CloudCompare——软件汉化

目录1.效果预览2.软件实现1.效果预览 如图所示&#xff0c;软件界面上显示内容翻译成中文。 2.软件实现 1、下载最新版本的CloudCompare&#xff0c;如图所示&#xff0c;下载箭头所指的任意一个版本即可。 官网下载链接&#xff1a;http://www.danielgm.net/cc/release/ …

数据分析:单元4 Matplotlib库入门

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化&#xff0c;并且提供多样化的输出格式。在这里我将介绍一下它的相关知识&#xff0c;你可以在这里快速学会如何用它画出好看的数据图像&#xff0c;如果你想学习到更多的知识&#xf…

跟 HTML 说hello

目 录 ​1.HTML的骨架标签 2.迎接自己的第一个HTML网页 聊起前端,最最最基础的应该就是HTML语言了哈!首先, HTML 指的是超文本标记语言 (Hyper Text Markup Language)是用来描述网页的一种语言 。超文本的含义就在于它可以加入图片、声音、动画、多媒体等内容&#xff08…

8、React路由

1、介绍 SPA概念&#xff1a;单页Web应用&#xff08;single page web application&#xff09;&#xff0c;就是只有一张Web页面的应用&#xff0c;由一个主页面和多个页面片段组成&#xff0c;由JS控制页面片段的展示与否。整个页面不会刷新&#xff0c;只会做局部页面的更新…

第三章、运输层(重点知识梳理)

3.1概述和运输层服务 3.1.1运输层概述 运输层协议是为运行在不同主机上的应用进程之间提供逻辑通信 传输协议运行在端系统 发送方&#xff1a;将应用层的报文分成报文段&#xff0c;然后传递给网络层接收方&#xff1a;将报文段重组成报文&#xff0c;然后传递给应用层有多个传…

前端设计走查平台实践(前端篇)

项目背景 随着前端业务的不断发展&#xff0c;前端对设计稿的还原程度也成为了影响用户对产品体验的一个关键指标&#xff0c;作为最靠近用户侧的研发&#xff0c;前端工程师通常需要和设计师同学通力配合来提升用户体验。其中&#xff0c;设计走查是设计同学最常见的测试前端同…

以赛促产 以赛引才 |第六届世界智能大会·中国华录杯数据湖算法大赛正式启动

6月24日&#xff0c;由天津市委网信办、天津市工业和信息化局、天津市津南区人民政府、中国华录集团有限公司主办&#xff0c;北京易华录信息技术股份有限公司承办的“第六届世界智能大会中国华录杯数据湖算法大赛”正式启动。 赛事发布 本次大赛以数据“收、存、治、用、易”…

【Unity Shader】纹理实践2.0:基本属性封装和滤波模式

关于理论知识 【技术美术图形部分】纹理基础1.0-纹理管线_flashinggg的博客-CSDN博客 上篇是总结了纹理映射一整个的流程&#xff0c;其中2.3纹理采样中提到了需要进行两块设置&#xff1a; 设置封装模式——Wrap Mode&#xff0c;介绍了封装模式都有哪些设置过滤模式——Fi…