【WinForm】 自学笔记三:使用 FreeSql 连接数据库,并对数据进行增删改查

前面使用 SqlConnection 连接数据可以的方法,每一次进行数据操作都要编写相应的SQL语句,操作起来比较繁琐。

为了简化代码的编写,提高代码的可靠性,使用了 FreeSql 插件,来减少代码的编写,提升开发效率。

FreeSql 官方文档地址: https://freesql.net/guide/#freesql

 

一、前期准备

1.根据要连接的数据库类型,使用Nuget安装相应的程序包

2. 在配置文件 App.Config 中添加连接的字符串。(也可以通过其他方式获取)

<add key="freeSqlConnectStr" value="Data Source=192.168.3.201;DataBase=Nine_Xhs_test;User Id=sa;Password=Nine!2021;"/>

 

 

 二、使用 FreeSql 连接数据库

1.新建一个 Model 文件夹,保存数据库中的表结构,这里新建一个UserInfo 的表作为示例

    /// <summary>
    /// 用户信息
    /// </summary>
    public class UserInfo
    {
        /// <summary>
        /// 用户ID
        /// </summary>
        [Column(IsPrimary = true)]  //指定数据的ID,不指定的话,进行操作的时候会报错
        public Guid Id { get; set; }
        /// <summary>
        /// 用户昵称
        /// </summary>
        public string NickName { get; set; }
        /// <summary>
        /// 电话号码
        /// </summary>
        public string Phone { get; set; }
        /// <summary>
        /// 简介
        /// </summary>
        public string Desc { get; set; }
        /// <summary>
        /// 位置
        /// </summary>
        public string Location { get; set; }
    }
View Code

2.初始化 FreeSql

        public Form4()
        {
            InitializeComponent();
        }

        static IFreeSql _freeSql;

        private void Form4_Load(object sender, EventArgs e)
        {
            var freeSqlConnectStr = ConfigurationManager.AppSettings.Get("freeSqlConnectStr");
            _freeSql = new FreeSql.FreeSqlBuilder()
                                  .UseConnectionString(FreeSql.DataType.SqlServer, freeSqlConnectStr)
                                  .UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
                                  .Build();
        }
View Code
UseAutoSyncStructure:
为 false 时,不修改数据库的结构,查询的对象与数据库的字段不匹配时会报错。
为 true 时,会自动更新数据库的表设计。如果查询的表在数据库中不存在,会在数据库中新建一个表。如果查询的字段在数据库中不存在,则会自动在数据库的表中添加字段。

注意: 

UseAutoSyncStructure为true时,会修改原来的表结构,未指定长度的字段会变成默认长度,还会修改字段的自增属性,需要慎用。

   最好是将对象中指定字段的长度,以及自增属性,防止被FreeSql 修改为默认长度,导致程序出现问题。

   需要添加引用:

using FreeSql.DataAnnotations;

  字段自增的写法:

        [Column(IsIdentity = true, IsPrimary = true)]
        public int Id { get; set; }

指定字段长度和类型的写法:

        [Column(DbType = "nvarchar(2000)")]
        public string ShareUrl { get; set; }

 

三、使用 FreeSql 对数据进行操作

 1.查询数据

        /// <summary>
        /// 获取最新数据
        /// </summary>
        public void GetNewData()
        {
            List<UserInfo> data = _freeSql.Select<UserInfo>().ToList();
            dataGridView1.DataSource = data;
        }
View Code

2.添加数据

        /// <summary>
        /// 添加新的用户数据
        /// </summary>
        public void AddNewData(object sender, EventArgs e)
        {
            var nickName = nameInput.Text;

            if (string.IsNullOrWhiteSpace(nickName))
            {
                MessageBox.Show("用户名称不能为空","提示信息");
            }
            else
            {
                var decs = descInput.Text;
                var phone = phoneInput.Text;
                var location = locationInput.Text;

                var user = new UserInfo
                {
                    Id = Guid.NewGuid(),
                    NickName = nickName,
                    Desc = decs,
                    Phone = phone,
                    Location = location,
                };

                var result = _freeSql.Insert(user).ExecuteAffrows() > 0;
                if (result)
                {
                    nameInput.Text = "";
                    descInput.Text = "";
                    phoneInput.Text = "";
                    locationInput.Text = "";
                    GetNewData();

                    MessageBox.Show("用户信息添加成功", "提示信息");
                }
                else 
                {
                    MessageBox.Show("用户信息添加失败", "提示信息");
                }
            }
        }
View Code

3.删除数据

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int index = e.ColumnIndex;
            var id = ((List<UserInfo>)dataGridView1.DataSource)[index].Id;


            var result = _freeSql.Select<UserInfo>(id).ToDelete().ExecuteAffrows() > 0;
            if (result)
            {
                GetNewData();
                MessageBox.Show("用户信息删除成功", "提示信息");
            }
            else
            {
                MessageBox.Show("用户信息删除失败", "提示信息");
            }
        }
View Code

 

posted @ 2023-03-10 17:44  Nine_Jason  阅读(1603)  评论(1编辑  收藏  举报