IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 使用SqlSugar连接多个数据库(sqlserver,sqlite,mysql) -> 正文阅读

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

? ? 有时候,一个项目只有一个数据库,比如只有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();   //查询数据
        }
    }
}

数据库中表的值

代码调试的值?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:59:31  更:2022-09-30 01:00:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/1 4:02:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码