C#参数设置 06

C#参数设置

参数设置成品如下

在这里插入图片描述可通过界面来设置参数,源码里动态使用

首先确定需要的参数:ID号,名称,参数,备注,所以可以得到相应的对象参数和数据库列又因为后续需要方便源码调用,所以还需要声名一个枚举,通过枚举来确定参数的名称

model层声名SystemSetInfo

public class SystemSetInfo
    {
        public int SId { get; set; }
        public string SName { get; set; }
        public string SParam { get; set; }
        public string SRemarks { get; set; }
    }
    public enum PName
    {
        日志保存天数,
        日志存放地址,
        生产记录保存天数,
        生产记录存放地址,
        PLCip地址,
        PLC端口号
    }

在这里插入图片描述
随后就是对数据库的读取,插入,更新
Dal层声名SystemSetDal

public class SystemSetDal
    {
        public List<SystemSetInfo> GetList(string SName)
        {
            //构造集合对象
            List<SystemSetInfo> list = new List<SystemSetInfo>();
            SQLiteParameter p = new SQLiteParameter();
            string sql = "select * from SystemSet";
            if (SName != null)
            {
                sql += " where SName=@sname";
                p = new SQLiteParameter("@sname", SName);
            }
            //执行查询,获取数据
            DataTable table = SqliteHelper.GetList(sql, p);
            //遍历数据表,将数据转存到集合中 遍历行
            foreach (DataRow row in table.Rows)
            {
                list.Add(new SystemSetInfo()
                {
                    SId = Convert.ToInt32(row["SId"]),
                    SName = row["SName"].ToString(),
                    SParam = row["SParam"].ToString(),
                    SRemarks = row["SRemarks"].ToString()
                });
            }
            //返回数据
            return list;
        }

        public int Insert(SystemSetInfo ssi)
        {
            //构造sql语句
            string sql =
                "insert into SystemSet(SName,SParam,SRemarks) values(@sname,@sparam,@sremarks)";
            //数组的初始化器
            SQLiteParameter[] ps =
                {
                   new SQLiteParameter("@sname", ssi.SName),
                   new SQLiteParameter("@sparam",ssi.SParam),
                   new SQLiteParameter("@sremarks",ssi.SRemarks)
                };
            //执行
            return SqliteHelper.ExecuteNonQuery(sql, ps);
        }

        public int Delete(int id)
        {
            string sql = "delete from SystemSet where Sid=@id";
            SQLiteParameter p = new SQLiteParameter("@id", id);
            return SqliteHelper.ExecuteNonQuery(sql, p);

        }

        public int Update(SystemSetInfo ssi)
        {
            List<SQLiteParameter> list = new List<SQLiteParameter>();
            string sql =
          "update SystemSet set SName=@sname,SParam=@sparam,SRemarks=@sremarks where Sid=@id";
            list.Add(new SQLiteParameter("@sname", ssi.SName));
            list.Add(new SQLiteParameter("@sparam", ssi.SParam));
            list.Add(new SQLiteParameter("@sremarks", ssi.SRemarks));
            list.Add(new SQLiteParameter("@id", ssi.SId.ToString()));
            return SqliteHelper.ExecuteNonQuery(sql, list.ToArray());
        }
    }

然后就是执行
Bll层声名

 #region << 版 本 注 释 >>
    /*----------------------------------------------------------------
    // Copyright (C) 2022 XXX单位
    // 版权所有。 
    //
    // 文件名:StandardSoftware
    // 文件功能描述:设置参数业务逻辑层
    //
    // 
    // 创建者:liangjinhao
    // 时间:2022/4/25 15:59:00
    // 功能:标准化软件
    //
    // 修改人:
    // 时间:
    // 修改说明:
    //
    // 版本:V1.0.0
    //----------------------------------------------------------------*/
    #endregion
    public class SystemSetBll
    {
        SystemSetDal ssd = new SystemSetDal();
        /// <summary>
        /// 声名一个静态变量
        /// </summary>
        private static SystemSetBll ssb;
        /// <summary>
        /// 构造函数
        /// </summary>
        private SystemSetBll()
        {

        }
        /// <summary>
        /// 单例模式
        /// </summary>
        /// <returns></returns>
        public static SystemSetBll Create()
        {
            if (ssb == null)
            {
                ssb = new SystemSetBll();
            }
            return ssb;
        }
        /// <summary>
        /// 得到当前表格所有值
        /// </summary>
        /// <returns></returns>
        public List<SystemSetInfo> GetList()
        {
            return ssd.GetList(null);
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="li"></param>
        /// <returns></returns>
        public bool Add(SystemSetInfo li)
        {
            return ssd.Insert(li) > 0;
        }
        /// <summary>
        /// 移除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool Remove(int id)
        {
            return ssd.Delete(id) > 0;
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="li"></param>
        /// <returns></returns>
        public bool Edit(SystemSetInfo li)
        {
            return ssd.Update(li) > 0;
        }
        /// <summary>
        /// 获得数据库参数名
        /// </summary>
        /// <returns></returns>
        public List<string> GetName()
        {
            List<string> list = new List<string>();
            List<SystemSetInfo> listLog = new List<SystemSetInfo>();
            listLog = ssd.GetList(null);
            if (listLog != null)
            {
                for (int i = 0; i < listLog.Count; i++)
                {
                    list.Add(listLog[i].SName);
                }
            }
            return list;
        }
        /// <summary>
        /// 返回枚举的string集合
        /// </summary>
        /// <typeparam name="PNameSystem"></typeparam>
        /// <returns></returns>
        public List<string> EnumToList<PName>()
        {
            List<string> list = new List<string>();
            foreach (var item in Enum.GetValues(typeof(PName)))
            {
                list.Add(item.ToString());
            }
            return list;
        }
        /// <summary>
        /// 通过泛型获取系统参数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="paramName"></param>
        /// <returns></returns>
        public T GetValue<T>(PName paramName)
        {
            try
            {
                var list = ssd.GetList(paramName.ToString());
                if (list.Count > 0)
                {
                    return (T)Convert.ChangeType(list[0].SParam, typeof(T));
                }
                else
                {
                    return default(T);
                }
            }
            catch (Exception)
            {

                throw;
            }
            
        }
    }

最后UI层设计页面
在这里插入图片描述
需要注意的是,该界面默认打开就从数据库读取所有的数据绑定到dgv_SystemSet上,并且双击dgv_SystemSet,会将相应的参数显示在右边的页面,方便用户修改,其中删除是用于枚举修改后,删除多余的数据

 public partial class SystemSetFrom : Form
    {
        public SystemSetFrom()
        {
            InitializeComponent();
            CheckDgv();
        }
        SystemSetBll ssb= SystemSetBll.Create();
        private void LoadList()
        {
            tbx_Id.Enabled = false;
            dgv_SystemSet.AutoGenerateColumns = false;
            dgv_SystemSet.ReadOnly = true;
            dgv_SystemSet.DataSource = ssb.GetList();           
        }
        /// <summary>
        /// 判断枚举和数据库里的参数是否相同
        /// </summary>
        private void CheckDgv()
        {
            List<string> list = ssb.GetName();
            List<string> listenum = ssb.EnumToList<PName>();
            if (list != null)
            {
                for (int i = 0; i < listenum.Count; i++)
                {
                    if(!(list.Contains(listenum[i])))
                    {
                        SystemSetInfo ssi = new SystemSetInfo()
                        {
                            SName = listenum[i],
                            SParam = "",
                            SRemarks = ""
                        };
                        ssb.Add(ssi);
                    }
                }
            }
            else
            {
                for (int i = 0; i < listenum.Count; i++)
                {
                    SystemSetInfo ssi = new SystemSetInfo()
                    {
                        SName = listenum[i],
                        SParam = "",
                        SRemarks = ""
                    };
                    ssb.Add(ssi);
                }
            }
            LoadList();
        }
        private void btn_SaveSystemSet_Click(object sender, EventArgs e)
        {

        }

        private void btn_Add_Click(object sender, EventArgs e)
        {
            try
            {
                //接收对象的值,用于构造
                SystemSetInfo ssi = new SystemSetInfo()
                {
                    SName = tbx_name.Text,
                    SParam = tbx_Param.Text,
                    SRemarks = tbx_remark.Text
                };
                ssi.SId = Convert.ToInt32(tbx_Id.Text);
                if (ssb.Edit(ssi))
                {
                    btn_Cancel_Click(null, null);
                    LoadList();
                }
                else
                {
                    MessageBox.Show("修改失败");
                }
            }
            catch (Exception)
            {
            }
        }

        private void btn_Cancel_Click(object sender, EventArgs e)
        {
            tbx_Id.Text = "无编号";
            tbx_Param.Text = "";
            tbx_name.Text = "";
            tbx_remark.Text = "";
            tbx_name.Enabled = true;
            btn_Add.Text = "修改";
        }

        private void btn_Delete_Click(object sender, EventArgs e)
        {
            //获取选中的行
            var rows = dgv_SystemSet.SelectedRows;
            //集合用的是.count  数组用的是.lenth
            if (rows.Count > 0)
            {
                DialogResult result = MessageBox.Show("确定要删除?",
                    "提示", MessageBoxButtons.OKCancel);
                if (result == DialogResult.OK)
                {
                    int id = Convert.ToInt32(rows[0].Cells[0].Value);
                    if (ssb.Remove(id))
                    {
                        LoadList();
                    }
                    else
                    {
                        MessageBox.Show("删除失败,请稍后重试");
                    }
                }
            }
            else
            {
                MessageBox.Show("未选中要删除的行");
            }
        }

        private void dgv_SystemSet_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                var row = dgv_SystemSet.Rows[e.RowIndex];
                tbx_Id.Text = row.Cells[0].Value.ToString();
                tbx_name.Text = row.Cells[1].Value.ToString();
                tbx_Param.Text = row.Cells[2].Value.ToString();
                tbx_remark.Text = row.Cells[3].Value.ToString();
                tbx_name.Enabled = false;
                tbx_Param.Focus();
                btn_Add.Text = "修改";
            }
            catch (Exception)
            {
            }
           
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Abril_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值