zoukankan      html  css  js  c++  java
  • C# SqlSugar框架的学习使用(二) 类的生成及增删改查的应用

    C# SqlSugar框架的学习使用(二)-- 类的生成及增删改查的应用

    C# SqlSugar框架的学习使用(二)-- 类的生成及增删改查的应用 - 云+社区 - 腾讯云 (tencent.com)

    前一篇《C# SqlSugar框架的学习使用(一)--SqlSugar简介及创建》我们已经简单的介绍了一下SqlSugar,最后我们在项目中新建了一个SqlSugarTest的Demo。这篇我们就用这个Demo进行我们的数据库操作。

    环境说明

    数据库版本:SQLSERVER 2008 R2

    编译器:Visual Studio 2017

    我们自己的SQLSERVER2008中创建了一个名称为SumCharge的数据库,里面建立了一部分表,如下图:

    代码演示

    我们在上一篇中建的SqlSugarTest中的框体文件加入6个Button和一个TextBox。

    封装一下文本框操作

            #region 文本框操作
            //定义文本框
            private static TextBox _tbMsg;
    
            //定义Action
            private Action<string> TextShowAction = new Action<string>(TextShow);
    
            //定义更新UI函数
            private static void TextShow(string sMsg)
            {
                //当文本行数大于500后清空
                if (_tbMsg.Lines.Length > 500)
                {
                    _tbMsg.Clear();
                }
                string ShowMsg = DateTime.Now + "  " + sMsg + "\r\n";
                _tbMsg.AppendText(ShowMsg);
    
                //让文本框获取焦点 
                _tbMsg.Focus();
                //设置光标的位置到文本尾 
                _tbMsg.Select(_tbMsg.TextLength, 0);
                //滚动到控件光标处 
                _tbMsg.ScrollToCaret();
            } 
            #endregion

    数据库连接代码

            #region 数据库连接
            /// <summary>
            /// 数据库实例
            /// </summary>
            private SqlSugarClient _db;
            //数据库连接字符串
            private string _connstr = "server=.;uid=sa;pwd=sumsoft;database=SumCharge";
            /// <summary>
            /// 连接数据库
            /// </summary>
            /// <param name="connstr"></param>
            private void ConnectDb(string connstr)
            {
                _db = new SqlSugarClient(
                    new ConnectionConfig()
                    {
                        ConnectionString = _connstr,
                        DbType = SqlSugar.DbType.SqlServer,//设置数据库类型
                        IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放
                        InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息
                    });
    
                //用来打印Sql方便你调式    
                _db.Aop.OnLogExecuting = (sql, pars) =>
                {
                    TextShow(sql);
                    TextShow(_db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
                };
            }
    
            #endregion

    上面两段就是我们的核心代码了,接下来我们来试试各个功能

    连接数据库

    我们在打开程序后要先连接数据库,数据库连接成功后才能进行别的操作,上面是连接数据库的核心代码,这里我们直接就是写一下按钮事件即可。

    根据数据库表生成实体类

            /// <summary>
            /// 根据数据库表生成实体类
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    _db.DbFirst.IsCreateDefaultValue().
                        CreateClassFile("D:\\Business\\DemoTEST\\CSharp\\SqlSugarTest\\SqlSugarTest\\Model", "Model");
                    TextShow("类生成成功");
                }
                catch (Exception ex)
                {
                    TextShow(ex.Message);
                }
            }

    上面的CreateClassFile里面有两个参数,第一个参数是生成的路径,第二个是命名空间。

    我们先来运行一下看看,指定的文件夹下现在是空的,我们打开程序,先点连接数据库,再点击生成类。

    再看看当前文件夹下,数据库中的表全都生成了对应的类了

    我们先把对应的类加入到项目中,方便后面的增、删、改、查的操作。

    SqlSugar增删改查操作

    我们都以数据库的OS这个表进行操作吧,表里一共四个字段,数据一条也没有。

    通过SqlSugar生成的POS类

    using System;
    using System.Linq;
    using System.Text;
    
    namespace Model
    {
        ///<summary>
        ///
        ///</summary>
        public partial class POS
        {
               public POS(){
    
    
               }
               /// <summary>
               /// Desc:
               /// Default:
               /// Nullable:False
               /// </summary>           
               public string Posno {get;set;}
    
               /// <summary>
               /// Desc:
               /// Default:
               /// Nullable:False
               /// </summary>           
               public string Posname {get;set;}
    
               /// <summary>
               /// Desc:
               /// Default:
               /// Nullable:True
               /// </summary>           
               public string OrgCode {get;set;}
    
               /// <summary>
               /// Desc:
               /// Default:
               /// Nullable:True
               /// </summary>           
               public string status {get;set;}
    
        }
    }

    增加Insert

    实例化POS赋值后进行插入操作

    运行效果

    我们前面在连接数据库时加入了输入Sql语句,为了方便调试,所以第二张图红框中就是我们加入生成的SQL语句。

    再查查数据库中的表

    查询Select

    返回所有数据

    根据条件查询

    运行效果

    修改Update

    运行后看到发现提示错误

    看上图的提示告诉我们没有找到主键,我们生成的这个类里没有相关的特性,查了一下SqlSugar后,发现我们可以在类中自己定义出来,在POS类中的Posno上面加入特性,如下图

    重新运行后发现修改成功了

    但是从上面的语句我们可以看到,我们没有加入的OrgCode和Status都默认在修改里面了,数据库中原来有值的也被改为NULL了。

    所以我们建议修改的时候要先把对应的属性先查询出来后再统一修改,这样不会传入的类后直接没赋值的改为NULL了。

    删除Delete

    删除里面我用了lambda表达式,把Posno为0001删除了,其实还有别的删除写法

    运行效果

    在数据库中再查询也是没有数据了

  • 相关阅读:
    并发编程 19—— 显式的Conditon 对象
    JVM实用参数——新生代垃圾回收
    设计模式 8 —— 适配器和外观模式
    并发编程 18—— 使用内置条件队列实现简单的有界缓存
    并发编程 17—— Lock
    Spring 事务管理 01 ——
    并发编程 16—— 线程池 之 原理二
    并发编程 15—— 线程池 之 原理一
    并发编程 14—— 线程池 之 整体架构
    java.util.logging.Logger 使用详解
  • 原文地址:https://www.cnblogs.com/zkwarrior/p/15788743.html
Copyright © 2011-2022 走看看