Commit eba2b93d authored by tr's avatar tr

1、数据库链接维护:改进去重和相似性判断

parent 29320a90
......@@ -64,6 +64,26 @@ namespace Tools.MyUtils
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
#endregion
#region 序号生成
/// <summary>
/// 生成定长序号
/// </summary>
/// <param name="seed">序号</param>
/// <param name="len">长度</param>
/// <returns></returns>
public static string GenSerialNo(int seed, int len = 2)
{
string s = seed.ToString();
if (s.Length < len)
{
s = $"0000{seed}";
s = s.Substring(s.Length - len);
}
return s;
}
#endregion
#region 打开文件
......@@ -153,6 +173,17 @@ namespace Tools.MyUtils
{
new wMsgBox().Show(msg, width, height);
}
/// <summary>
/// 是否提示
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public static bool TipYN(string msg)
{
var result = MessageBox.Show(msg, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
return result == DialogResult.Yes;
}
/// <summary>
/// 显示帮助信息
/// </summary>
......@@ -184,26 +215,6 @@ namespace Tools.MyUtils
action();
}
#endregion
#region 序号生成
/// <summary>
/// 生成定长序号
/// </summary>
/// <param name="seed">序号</param>
/// <param name="len">长度</param>
/// <returns></returns>
public static string GenSerialNo(int seed, int len = 2)
{
string s = seed.ToString();
if (s.Length < len)
{
s = $"0000{seed}";
s = s.Substring(s.Length - len);
}
return s;
}
#endregion
#region 数据库链接处理
......
......@@ -171,7 +171,9 @@ namespace Tools.MyUtils
}
/// <summary>
/// 数据链接模型
/// </summary>
public class DbItemModel
{
public string Link { get; set; }
......@@ -183,5 +185,32 @@ namespace Tools.MyUtils
{
return $"{this.DbName}({this.Link})";
}
public Similarity Compare(string linkString)
{
var m = Utils.GetDbItemModel(linkString);
return this.Compare(m);
}
public Similarity Compare(DbItemModel m)
{
if (this.Link != m.Link)
return Similarity.Different;
if (this.LinkString == m.LinkString)
return Similarity.Same;
if (this.Link == m.Link && this.DbName == m.DbName)
return Similarity.Similar;
return Similarity.None;
}
}
/// <summary>
/// 相似度
/// </summary>
public enum Similarity
{
None,
Same,
Similar,
Different,
}
}
......@@ -60,14 +60,13 @@ namespace Tools.UI
Utils.Tip("链接必须输入!");
return false;
}
if (this.IsAdd)
{
this.AddRow();
}
else
{
this.EditRow();
}
//新增状态,若新增失败则返回
if (this.IsAdd && !this.AddRow())
return false;
//编辑状态,若编辑失败则返回
if (!this.IsAdd && !this.EditRow())
return false;
return base.SaveCheck();
}
......@@ -103,39 +102,68 @@ namespace Tools.UI
/// <summary>
/// 新增数据
/// </summary>
private void AddRow()
private bool AddRow()
{
var note = this.tbNote.Text.Trim();
var link = this.tbLink.Text.Trim();
//重复判断
var isExist = this._db.IsExist($"SELECT COUNT(*) FROM dbo.FTT_DbLinkManager WHERE Note='{note}' AND Link = '{link}'");
if (isExist)
foreach (DataRowView r in this._ds.Tables[0].DefaultView)
{
Utils.Tip("数据已存在,请勿重复录入!");
return;
//重复判断
var linkNow = r["link"].ToString();
var m = Utils.GetDbItemModel(linkNow);
var sim = m.Compare(link);
if (sim == Similarity.Same)
{
Utils.Tip(this.GenMessage("已维护了一个相同链接,请检查!", r, m), 400, 240);
return false;
}
else if (sim == Similarity.Similar)
{
var isPass = Utils.TipYN(this.GenMessage("已维护了一个相似链接!是否继续添加?", r, m));
if (!isPass)
return false;
}
}
//増行
var drNew = this._ds.Tables[0].NewRow();
drNew["Note"] = note;
drNew["Link"] = link;
this._ds.Tables[0].Rows.Add(drNew);
return true;
}
/// <summary>
/// 更新数据
/// </summary>
private void EditRow()
private bool EditRow()
{
//查找编辑行
var drEdit = this._ds.Tables[0].Select($"ID={this.EditID}").FirstOrDefault();
if (this.EditID == 0 || drEdit == null)
{
Utils.Tip("请选择您要编辑的行!");
return;
return false;
}
//编辑赋值
drEdit["Note"] = this.tbNote.Text;
drEdit["Link"] = this.tbLink.Text.Trim();
drEdit.EndEdit();
return true;
}
/// <summary>
/// 生成消息
/// </summary>
/// <param name="msg"></param>
/// <param name="r"></param>
/// <param name="m"></param>
/// <returns></returns>
private string GenMessage(string msg, DataRowView r, DbItemModel m)
{
var blank = " ";
return $"{msg}\r\n序号:{r["ID"]}\r\n描述:{r["Note"]}\r\n链接:\r\n{blank}IP:{m.Link}\r\n{blank}用户:{m.UserId}\r\n{blank}密码:{m.Pwd}\r\n{blank}数据库:{m.DbName}";
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment