WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库,进行入门的增删改查等操作。擦,咋写着写着凌乱起来了。

SqlSugar官方文档:简单示例,1分钟入门 - SqlSugar 5x - .NET果糖网

2、环境SqlSugar V5.0版本需要.Net Framework 4.6 ,NuGet添加内容如下,安装红框中的内容就可以了。这里的数据库demo.db是自动创建的。

3、运行效果如下图 。

4、整体代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;

namespace ConsoleAppSqlSugar
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("启动");
            // 创建数据库对象
            SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "datasource=demo.db",
                DbType = DbType.Sqlite,
                IsAutoCloseConnection = true
            }, db =>
            {
                db.Aop.OnLogExecuting = (sql, pars) =>
                {
                    //获取原生SQL推荐 5.1.4.63 性能OK
                    Console.WriteLine(UtilMethods.GetNativeSql(sql,pars));
                    //获取无参数化 SQL 对性能有影响,特别大的SQL参数多的,调试使用
                    //Console.WriteLine(UtilMethods.GetSqlString(DbType.Sqlite,sql,pars));
                };
                
                //注意多租户 有几个设置几个
                //db.GetConnection(5).Aop;
            });

            bool isExit = true;

            while (isExit)
            {
                Console.WriteLine("请输入:");
                Console.WriteLine("1、创建数据库。");
                Console.WriteLine("2、创建数据表。");
                Console.WriteLine("3、查询表的所有。");
                Console.WriteLine("4、插入数据。");
                Console.WriteLine("5、更新数据。");
                Console.WriteLine("6、删除数据。");
                Console.WriteLine("7、退出");
                int result;
                if (int.TryParse(Console.ReadLine(),out result))
                {
                    switch (result)
                    {
                        case 1:
                            Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
                            break;
                        case 2:
                            Db.CodeFirst.InitTables<ToDos>();//所有库都支持
                            break;
                        case 3:
                            //查询表的所有
                            var list = Db.Queryable<ToDos>().ToList();
                            foreach (ToDos item in list)
                            {
                                Console.WriteLine("ToDoName:"+item.ToDoName+"  "+ "ToDoDescription:" + item.ToDoDescription);
                            }
                            break;
                        case 4:
                            //插入
                            int num1=Db.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();
                            if (num1>0)
                            {
                                Console.WriteLine("插入数据成功");
                            }
                            break;
                        case 5:
                            //更新
                            int num2 = Db.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();
                            if (num2 > 0)
                            {
                                Console.WriteLine("更新数据成功");
                            }
                            break;
                        case 6:
                            //删除
                            int num3 = Db.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();
                            if (num3 > 0)
                            {
                                Console.WriteLine("删除数据成功");
                            }
                            break;
                        case 7:
                            isExit = false;
                            break;
                        default:
                            isExit = false;
                            break;
                    }
                }
            }


            Console.WriteLine("输入回车退出程序。");
            Console.ReadLine();
        }
    }
}

5、简单的仓储,其实官网也有很合的仓储示例。仓储简单类代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;

namespace ConsoleAppSqlSugar
{
    //定义一个泛型仓储类,继承自SimpleClient<T>,T是一个类的泛型参数
    public class SqlSugarRepository<T>:SimpleClient<T> where T:class,new()
    {
        //构造函数
        public SqlSugarRepository()
        {
            //创建SqlSugarClient实例,用于数据库操作。
            var db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "datasource=demo.db",
                DbType = DbType.Sqlite,
                IsAutoCloseConnection = true
            });

            //将创建的SqlSugarClient实例复制给继承自SimlpeClient<T>的Context属性
            base.Context = db;
            //配置AOP拦截器,在SQL语句执行前输出SQL语句控制器
            db.Aop.OnLogExecuting = (sql, pars) =>
            {
                Console.WriteLine(sql); //控制台输出执行的SQL语句
            };
        }
    }
}

调用代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;

namespace ConsoleAppSqlSugar
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("启动");
            // 创建数据库对象
            //SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
            //{
            //    ConnectionString = "datasource=demo.db",
            //    DbType = DbType.Sqlite,
            //    IsAutoCloseConnection = true
            //}, db =>
            //{
            //    db.Aop.OnLogExecuting = (sql, pars) =>
            //    {
            //        //获取原生SQL推荐 5.1.4.63 性能OK
            //        Console.WriteLine(UtilMethods.GetNativeSql(sql,pars));
            //        //获取无参数化 SQL 对性能有影响,特别大的SQL参数多的,调试使用
            //        //Console.WriteLine(UtilMethods.GetSqlString(DbType.Sqlite,sql,pars));
            //    };
                
            //    //注意多租户 有几个设置几个
            //    //db.GetConnection(5).Aop;
            //});

            //创建ToDos类型的仓储实例。
            var toDosRepository = new SqlSugarRepository<ToDos>();
            bool isExit = true;

            while (isExit)
            {
                Console.WriteLine("请输入:");
                Console.WriteLine("1、创建数据库。");
                Console.WriteLine("2、创建数据表。");
                Console.WriteLine("3、查询表的所有。");
                Console.WriteLine("4、插入数据。");
                Console.WriteLine("5、更新数据。");
                Console.WriteLine("6、删除数据。");
                Console.WriteLine("7、退出");
                int result;
                if (int.TryParse(Console.ReadLine(),out result))
                {
                    switch (result)
                    {
                        case 1:
                            //Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
                            toDosRepository.Context.DbMaintenance.CreateDatabase();
                            break;
                        case 2:
                            //Db.CodeFirst.InitTables<ToDos>();//所有库都支持
                            toDosRepository.Context.CodeFirst.InitTables<ToDos>();//所有库都支持
                            break;
                        case 3:
                            //查询表的所有
                            //var list = Db.Queryable<ToDos>().ToList();
                            var list = toDosRepository.Context.Queryable<ToDos>().ToList();
                            foreach (ToDos item in list)
                            {
                                Console.WriteLine("ToDoName:"+item.ToDoName+"  "+ "ToDoDescription:" + item.ToDoDescription);
                            }
                            break;
                        case 4:
                            //插入
                            //int num1=Db.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();
                            int num1 = toDosRepository.Context.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();
                            if (num1>0)
                            {
                                Console.WriteLine("插入数据成功");
                            }
                            break;
                        case 5:
                            //更新
                            //int num2 = Db.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();
                            int num2 = toDosRepository.Context.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();
                            if (num2 > 0)
                            {
                                Console.WriteLine("更新数据成功");
                            }
                            break;
                        case 6:
                            //删除
                            //int num3 = Db.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();
                            int num3 = toDosRepository.Context.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();
                            if (num3 > 0)
                            {
                                Console.WriteLine("删除数据成功");
                            }
                            break;
                        case 7:
                            isExit = false;
                            break;
                        default:
                            isExit = false;
                            break;
                    }
                }
            }


            Console.WriteLine("输入回车退出程序。");
            Console.ReadLine();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为风而战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值