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)
{
}
}
}
版权声明:本文为Abril_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。