? ? 有時(shí)候,一個(gè)項(xiàng)目只有一個(gè)數(shù)據(jù)庫,比如只有SQLite,或者M(jìn)ySQL數(shù)據(jù)庫,那么我們只需要使用一個(gè)固定的數(shù)據(jù)庫即可。但是一個(gè)項(xiàng)目如果寫好了,有多個(gè)用戶使用,但是多個(gè)用戶使用不同的數(shù)據(jù)庫,這個(gè)時(shí)候,我們就需要把軟件設(shè)計(jì)成可以連接多個(gè)數(shù)據(jù)庫的模式,用什么數(shù)據(jù)庫,就配置什么數(shù)據(jù)庫即可。
本例子分別使用
sqlserver
mysql
SQLite
1.建立一個(gè)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"]), //配置數(shù)據(jù)庫類型
ConnectionString = ConfigurationManager.AppSettings["ConnectionString"], //數(shù)據(jù)庫連接字符串
IsAutoCloseConnection = true,//設(shè)置為true無需使用using或者Close操作,自動(dòng)關(guān)閉連接,不需要手動(dòng)關(guān)閉數(shù)據(jù)鏈接
InitKeyType = InitKeyType.SystemTable//默認(rèn)SystemTable, 字段信息讀取, 如:該屬性是不是主鍵,是不是標(biāo)識(shí)列等等信息
});
}
}
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實(shí)體類,這個(gè)實(shí)體類要和數(shù)據(jù)庫一樣的,形成一一對(duì)應(yīng)的關(guān)系。
數(shù)據(jù)庫
此處,我們是先有數(shù)據(jù)庫,然后手動(dòng)創(chuàng)建的實(shí)體類。也可以使用SqlSugar工具箱或者代碼自動(dòng)生成實(shí)體類
Db First 實(shí)體生成 - SqlSugar 5x - .NET果糖網(wǎng)
代碼
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數(shù)據(jù)庫,然后進(jìn)行調(diào)試,看程序的結(jié)果
數(shù)據(jù)庫中表的值
9. 我們修改配置,換成SqlServer數(shù)據(jù)庫
<?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.啟動(dòng)SqlServer數(shù)據(jù)庫,然后進(jìn)行調(diào)試,看程序的結(jié)果
數(shù)據(jù)庫中表的值
11.Sqlite數(shù)據(jù)庫,需要在代碼里面創(chuàng)建數(shù)據(jù)庫,建立表,再建立數(shù)據(jù)
配置文件
<?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"]), //配置數(shù)據(jù)庫類型
ConnectionString = DBConnectionString, //數(shù)據(jù)庫連接字符串
IsAutoCloseConnection = true,//設(shè)置為true無需使用using或者Close操作,自動(dòng)關(guān)閉連接,不需要手動(dòng)關(guān)閉數(shù)據(jù)鏈接
InitKeyType = InitKeyType.Attribute//默認(rèn)SystemTable, 字段信息讀取, 如:該屬性是不是主鍵,是不是標(biāo)識(shí)列等等信息
});
}
}
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\測(cè)試\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(); //插入數(shù)據(jù)
var users = HelperDB.SqlSugarClient.Queryable<Users>().Where(c => c.Name == "張三").ToList(); //查詢數(shù)據(jù)
}
}
}
數(shù)據(jù)庫中表的值
代碼調(diào)試的值?
文章來源:http://www.zghlxwxcb.cn/news/detail-403170.html
來源:使用SqlSugar連接多個(gè)數(shù)據(jù)庫(sqlserver,sqlite,mysql)-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-403170.html
到了這里,關(guān)于使用SqlSugar連接多個(gè)數(shù)據(jù)庫(sqlserver,sqlite,mysql)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!