Commit eba2b93d authored by tr's avatar tr

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

parent 29320a90
...@@ -64,6 +64,26 @@ namespace Tools.MyUtils ...@@ -64,6 +64,26 @@ namespace Tools.MyUtils
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); 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 #endregion
#region 打开文件 #region 打开文件
...@@ -142,7 +162,7 @@ namespace Tools.MyUtils ...@@ -142,7 +162,7 @@ namespace Tools.MyUtils
} }
#endregion #endregion
#region winform:提示;帮助窗口;异步UI支持 #region winform:提示;帮助窗口;异步UI支持
/// <summary> /// <summary>
...@@ -153,6 +173,17 @@ namespace Tools.MyUtils ...@@ -153,6 +173,17 @@ namespace Tools.MyUtils
{ {
new wMsgBox().Show(msg, width, height); 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>
/// 显示帮助信息 /// 显示帮助信息
/// </summary> /// </summary>
...@@ -185,27 +216,7 @@ namespace Tools.MyUtils ...@@ -185,27 +216,7 @@ namespace Tools.MyUtils
} }
#endregion #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 数据库链接处理 #region 数据库链接处理
/// <summary> /// <summary>
......
...@@ -171,7 +171,9 @@ namespace Tools.MyUtils ...@@ -171,7 +171,9 @@ namespace Tools.MyUtils
} }
/// <summary>
/// 数据链接模型
/// </summary>
public class DbItemModel public class DbItemModel
{ {
public string Link { get; set; } public string Link { get; set; }
...@@ -183,5 +185,32 @@ namespace Tools.MyUtils ...@@ -183,5 +185,32 @@ namespace Tools.MyUtils
{ {
return $"{this.DbName}({this.Link})"; 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 ...@@ -60,14 +60,13 @@ namespace Tools.UI
Utils.Tip("链接必须输入!"); Utils.Tip("链接必须输入!");
return false; return false;
} }
if (this.IsAdd) //新增状态,若新增失败则返回
{ if (this.IsAdd && !this.AddRow())
this.AddRow(); return false;
} //编辑状态,若编辑失败则返回
else if (!this.IsAdd && !this.EditRow())
{ return false;
this.EditRow();
}
return base.SaveCheck(); return base.SaveCheck();
} }
...@@ -103,39 +102,68 @@ namespace Tools.UI ...@@ -103,39 +102,68 @@ namespace Tools.UI
/// <summary> /// <summary>
/// 新增数据 /// 新增数据
/// </summary> /// </summary>
private void AddRow() private bool AddRow()
{ {
var note = this.tbNote.Text.Trim(); var note = this.tbNote.Text.Trim();
var link = this.tbLink.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}'"); foreach (DataRowView r in this._ds.Tables[0].DefaultView)
if (isExist)
{ {
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(); var drNew = this._ds.Tables[0].NewRow();
drNew["Note"] = note; drNew["Note"] = note;
drNew["Link"] = link; drNew["Link"] = link;
this._ds.Tables[0].Rows.Add(drNew); this._ds.Tables[0].Rows.Add(drNew);
return true;
} }
/// <summary> /// <summary>
/// 更新数据 /// 更新数据
/// </summary> /// </summary>
private void EditRow() private bool EditRow()
{ {
//查找编辑行 //查找编辑行
var drEdit = this._ds.Tables[0].Select($"ID={this.EditID}").FirstOrDefault(); var drEdit = this._ds.Tables[0].Select($"ID={this.EditID}").FirstOrDefault();
if (this.EditID == 0 || drEdit == null) if (this.EditID == 0 || drEdit == null)
{ {
Utils.Tip("请选择您要编辑的行!"); Utils.Tip("请选择您要编辑的行!");
return; return false;
} }
//编辑赋值 //编辑赋值
drEdit["Note"] = this.tbNote.Text; drEdit["Note"] = this.tbNote.Text;
drEdit["Link"] = this.tbLink.Text.Trim(); drEdit["Link"] = this.tbLink.Text.Trim();
drEdit.EndEdit(); 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