diff --git a/CalendarNotepad/App.config b/CalendarNotepad/App.config
index 27135b1..67f824c 100644
--- a/CalendarNotepad/App.config
+++ b/CalendarNotepad/App.config
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/CalendarNotepad/Extends/DbContext.cs b/CalendarNotepad/Extends/DbContext.cs
index 440a368..a92b87c 100644
--- a/CalendarNotepad/Extends/DbContext.cs
+++ b/CalendarNotepad/Extends/DbContext.cs
@@ -1,5 +1,7 @@
using CalendarNotepad.Models;
using SqlSugar;
+using System.Text;
+using System.Text.RegularExpressions;
namespace CalendarNotepad.Extends
{
@@ -18,11 +20,55 @@ namespace CalendarNotepad.Extends
IsAutoCloseConnection = false,
};
+ ///
+ /// 初始化数据库
+ ///
public void DbInit() {
using var db = new DbContext();
- db.CodeFirst.InitTables();
+ db.CodeFirst.InitTables();
db.CodeFirst.InitTables();
db.CodeFirst.InitTables();
}
+
+ ///
+ /// 清除数据库垃圾
+ ///
+ public string DbClean() {
+ StringBuilder sb = new();
+ int i;
+ i = this.Deleteable()
+ .Where(a => !SqlFunc.Subqueryable().Where(b => b.WorkDay == a.WorkDay).Any())
+ .ExecuteCommand();
+ sb.AppendLine($"WorkUnitPlusFile 清除{i}条数据。");
+
+ i = this.Deleteable()
+ .Where(a => !SqlFunc.Subqueryable().Where(b => b.FileKey == a.FileId).Any())
+ .ExecuteCommand();
+ sb.AppendLine($"PlusFileUnit 清除{i}条数据。");
+ return sb.ToString();
+ }
+ ///
+ /// 压缩数据库文件
+ ///
+ ///
+ public string DbVacuum() {
+ var file = this.SqliteDbfile;
+ var oldSize = new FileInfo(file).Length;
+ this.Ado.ExecuteCommand("VACUUM;");
+ var newSize = new FileInfo(file).Length;
+ return $"数据库压缩:原始{oldSize},压缩后{newSize}";
+ }
+
+ ///
+ /// sqllite数据库文件
+ ///
+ public string SqliteDbfile {
+ get {
+ var regex = new Regex(@"DataSource\s*=\s*(?.*?);");
+ var mc = regex.Match(AppConfig.SqliteFileName);
+ var file = mc.Groups["key"].Value;
+ return file;
+ }
+ }
}
}
diff --git a/CalendarNotepad/WorkMain.Designer.cs b/CalendarNotepad/WorkMain.Designer.cs
index fff0571..a9957eb 100644
--- a/CalendarNotepad/WorkMain.Designer.cs
+++ b/CalendarNotepad/WorkMain.Designer.cs
@@ -52,11 +52,23 @@
cms_FileList = new ContextMenuStrip(components);
删除ToolStripMenuItem = new ToolStripMenuItem();
导入ToolStripMenuItem = new ToolStripMenuItem();
+ 下载ToolStripMenuItem = new ToolStripMenuItem();
toolStrip1 = new ToolStrip();
tsp_Copy = new ToolStripButton();
tsb_palse = new ToolStripButton();
+ tabPage1 = new TabPage();
+ flowLayoutPanel3 = new FlowLayoutPanel();
+ bt_m_ys = new Button();
+ label3 = new Label();
+ flowLayoutPanel2 = new FlowLayoutPanel();
+ bt_m_Clean = new Button();
+ label2 = new Label();
+ panel2 = new Panel();
+ panel3 = new Panel();
OpenFileDlg = new OpenFileDialog();
- 下载ToolStripMenuItem = new ToolStripMenuItem();
+ flowLayoutPanel4 = new FlowLayoutPanel();
+ label1 = new Label();
+ bt_m_Backup = new Button();
tabControl1.SuspendLayout();
tpWorkManage.SuspendLayout();
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
@@ -70,11 +82,16 @@
C_WorkTypes.SuspendLayout();
cms_FileList.SuspendLayout();
toolStrip1.SuspendLayout();
+ tabPage1.SuspendLayout();
+ flowLayoutPanel3.SuspendLayout();
+ flowLayoutPanel2.SuspendLayout();
+ flowLayoutPanel4.SuspendLayout();
SuspendLayout();
//
// tabControl1
//
tabControl1.Controls.Add(tpWorkManage);
+ tabControl1.Controls.Add(tabPage1);
tabControl1.Dock = DockStyle.Fill;
tabControl1.Location = new Point(0,0);
tabControl1.Name = "tabControl1";
@@ -329,22 +346,29 @@
//
cms_FileList.Items.AddRange(new ToolStripItem[] { 删除ToolStripMenuItem,导入ToolStripMenuItem,下载ToolStripMenuItem });
cms_FileList.Name = "contextMenuStrip1";
- cms_FileList.Size = new Size(181,92);
+ cms_FileList.Size = new Size(101,70);
//
// 删除ToolStripMenuItem
//
删除ToolStripMenuItem.Name = "删除ToolStripMenuItem";
- 删除ToolStripMenuItem.Size = new Size(180,22);
+ 删除ToolStripMenuItem.Size = new Size(100,22);
删除ToolStripMenuItem.Text = "删除";
删除ToolStripMenuItem.Click += 删除ToolStripMenuItem_Click;
//
// 导入ToolStripMenuItem
//
导入ToolStripMenuItem.Name = "导入ToolStripMenuItem";
- 导入ToolStripMenuItem.Size = new Size(180,22);
+ 导入ToolStripMenuItem.Size = new Size(100,22);
导入ToolStripMenuItem.Text = "导入";
导入ToolStripMenuItem.Click += 导入ToolStripMenuItem_Click;
//
+ // 下载ToolStripMenuItem
+ //
+ 下载ToolStripMenuItem.Name = "下载ToolStripMenuItem";
+ 下载ToolStripMenuItem.Size = new Size(100,22);
+ 下载ToolStripMenuItem.Text = "下载";
+ 下载ToolStripMenuItem.Click += 下载ToolStripMenuItem_Click;
+ //
// toolStrip1
//
toolStrip1.Items.AddRange(new ToolStripItem[] { tsp_Copy,tsb_palse });
@@ -374,16 +398,139 @@
tsb_palse.Text = "粘贴";
tsb_palse.Click += tsb_palse_Click;
//
+ // tabPage1
+ //
+ tabPage1.Controls.Add(flowLayoutPanel4);
+ tabPage1.Controls.Add(flowLayoutPanel3);
+ tabPage1.Controls.Add(flowLayoutPanel2);
+ tabPage1.Controls.Add(panel2);
+ tabPage1.Controls.Add(panel3);
+ tabPage1.Location = new Point(4,26);
+ tabPage1.Name = "tabPage1";
+ tabPage1.Padding = new Padding(3);
+ tabPage1.Size = new Size(709,413);
+ tabPage1.TabIndex = 2;
+ tabPage1.Text = "管理";
+ tabPage1.UseVisualStyleBackColor = true;
+ //
+ // flowLayoutPanel3
+ //
+ flowLayoutPanel3.AutoSize = true;
+ flowLayoutPanel3.Controls.Add(bt_m_ys);
+ flowLayoutPanel3.Controls.Add(label3);
+ flowLayoutPanel3.Dock = DockStyle.Top;
+ flowLayoutPanel3.Location = new Point(3,42);
+ flowLayoutPanel3.Name = "flowLayoutPanel3";
+ flowLayoutPanel3.Padding = new Padding(5);
+ flowLayoutPanel3.Size = new Size(703,39);
+ flowLayoutPanel3.TabIndex = 4;
+ //
+ // bt_m_ys
+ //
+ bt_m_ys.Location = new Point(8,8);
+ bt_m_ys.Name = "bt_m_ys";
+ bt_m_ys.Size = new Size(75,23);
+ bt_m_ys.TabIndex = 0;
+ bt_m_ys.Text = "压缩";
+ bt_m_ys.UseVisualStyleBackColor = true;
+ bt_m_ys.Click += bt_m_ys_Click;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Font = new Font("微软雅黑",12F,FontStyle.Regular,GraphicsUnit.Point);
+ label3.Location = new Point(89,5);
+ label3.Name = "label3";
+ label3.Size = new Size(266,21);
+ label3.TabIndex = 1;
+ label3.Text = "压缩数据库文件尺寸,减少文件大小";
+ //
+ // flowLayoutPanel2
+ //
+ flowLayoutPanel2.AutoSize = true;
+ flowLayoutPanel2.AutoSizeMode = AutoSizeMode.GrowAndShrink;
+ flowLayoutPanel2.Controls.Add(bt_m_Clean);
+ flowLayoutPanel2.Controls.Add(label2);
+ flowLayoutPanel2.Dock = DockStyle.Top;
+ flowLayoutPanel2.Location = new Point(3,3);
+ flowLayoutPanel2.Name = "flowLayoutPanel2";
+ flowLayoutPanel2.Padding = new Padding(5);
+ flowLayoutPanel2.Size = new Size(703,39);
+ flowLayoutPanel2.TabIndex = 3;
+ //
+ // bt_m_Clean
+ //
+ bt_m_Clean.Location = new Point(8,8);
+ bt_m_Clean.Name = "bt_m_Clean";
+ bt_m_Clean.Size = new Size(75,23);
+ bt_m_Clean.TabIndex = 0;
+ bt_m_Clean.Text = "清理";
+ bt_m_Clean.UseVisualStyleBackColor = true;
+ bt_m_Clean.Click += bt_m_Clean_Click;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("微软雅黑",12F,FontStyle.Regular,GraphicsUnit.Point);
+ label2.Location = new Point(89,5);
+ label2.Name = "label2";
+ label2.Size = new Size(170,21);
+ label2.TabIndex = 1;
+ label2.Text = "清除数据库中无用垃圾";
+ //
+ // panel2
+ //
+ panel2.AutoSize = true;
+ panel2.Dock = DockStyle.Top;
+ panel2.Location = new Point(3,3);
+ panel2.Name = "panel2";
+ panel2.Size = new Size(703,0);
+ panel2.TabIndex = 2;
+ //
+ // panel3
+ //
+ panel3.AutoSize = true;
+ panel3.Dock = DockStyle.Top;
+ panel3.Location = new Point(3,3);
+ panel3.Name = "panel3";
+ panel3.Size = new Size(703,0);
+ panel3.TabIndex = 1;
+ //
// OpenFileDlg
//
OpenFileDlg.Multiselect = true;
//
- // 下载ToolStripMenuItem
+ // flowLayoutPanel4
//
- 下载ToolStripMenuItem.Name = "下载ToolStripMenuItem";
- 下载ToolStripMenuItem.Size = new Size(180,22);
- 下载ToolStripMenuItem.Text = "下载";
- 下载ToolStripMenuItem.Click += 下载ToolStripMenuItem_Click;
+ flowLayoutPanel4.AutoSize = true;
+ flowLayoutPanel4.Controls.Add(bt_m_Backup);
+ flowLayoutPanel4.Controls.Add(label1);
+ flowLayoutPanel4.Dock = DockStyle.Top;
+ flowLayoutPanel4.Location = new Point(3,81);
+ flowLayoutPanel4.Name = "flowLayoutPanel4";
+ flowLayoutPanel4.Padding = new Padding(5);
+ flowLayoutPanel4.Size = new Size(703,39);
+ flowLayoutPanel4.TabIndex = 5;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("微软雅黑",12F,FontStyle.Regular,GraphicsUnit.Point);
+ label1.Location = new Point(89,5);
+ label1.Name = "label1";
+ label1.Size = new Size(266,21);
+ label1.TabIndex = 1;
+ label1.Text = "备份数据文件,以便将来出错时还原";
+ //
+ // bt_m_Backup
+ //
+ bt_m_Backup.Location = new Point(8,8);
+ bt_m_Backup.Name = "bt_m_Backup";
+ bt_m_Backup.Size = new Size(75,23);
+ bt_m_Backup.TabIndex = 0;
+ bt_m_Backup.Text = "备份";
+ bt_m_Backup.UseVisualStyleBackColor = true;
+ bt_m_Backup.Click += bt_m_Backup_Click;
//
// WorkMain
//
@@ -414,6 +561,14 @@
cms_FileList.ResumeLayout(false);
toolStrip1.ResumeLayout(false);
toolStrip1.PerformLayout();
+ tabPage1.ResumeLayout(false);
+ tabPage1.PerformLayout();
+ flowLayoutPanel3.ResumeLayout(false);
+ flowLayoutPanel3.PerformLayout();
+ flowLayoutPanel2.ResumeLayout(false);
+ flowLayoutPanel2.PerformLayout();
+ flowLayoutPanel4.ResumeLayout(false);
+ flowLayoutPanel4.PerformLayout();
ResumeLayout(false);
}
@@ -449,5 +604,17 @@
private ToolStripMenuItem 导入ToolStripMenuItem;
private OpenFileDialog OpenFileDlg;
private ToolStripMenuItem 下载ToolStripMenuItem;
+ private TabPage tabPage1;
+ private Panel panel3;
+ private Label label3;
+ private Button bt_m_ys;
+ private FlowLayoutPanel flowLayoutPanel3;
+ private FlowLayoutPanel flowLayoutPanel2;
+ private Button bt_m_Clean;
+ private Label label2;
+ private Panel panel2;
+ private FlowLayoutPanel flowLayoutPanel4;
+ private Button bt_m_Backup;
+ private Label label1;
}
}
\ No newline at end of file
diff --git a/CalendarNotepad/WorkMain.cs b/CalendarNotepad/WorkMain.cs
index 483385e..b6ef690 100644
--- a/CalendarNotepad/WorkMain.cs
+++ b/CalendarNotepad/WorkMain.cs
@@ -101,7 +101,7 @@ namespace CalendarNotepad
}
private void WorkMain_Load(object sender,EventArgs e) {
- mcWorkDay_DateChanged(null,null);
+ mcWorkDay_DateChanged(sender,new DateRangeEventArgs(this.mcWorkDay.SelectionStart,this.mcWorkDay.SelectionEnd));
}
///
@@ -166,7 +166,7 @@ namespace CalendarNotepad
}
private void btReset_Click(object sender,EventArgs e) {
- mcWorkDay_DateChanged(sender,null);
+ mcWorkDay_DateChanged(sender,new DateRangeEventArgs(this.mcWorkDay.SelectionStart,this.mcWorkDay.SelectionEnd));
this.DataReset();
}
@@ -305,5 +305,30 @@ namespace CalendarNotepad
}
}
}
+
+ private void bt_m_ys_Click(object sender,EventArgs e) {
+ var r = this.Db.DbVacuum();
+ MessageBox.Show(r);
+ }
+
+ private void bt_m_Clean_Click(object sender,EventArgs e) {
+ var r = this.Db.DbClean();
+ MessageBox.Show(r);
+
+ }
+
+ private void bt_m_Backup_Click(object sender,EventArgs e) {
+ var sdlg = new SaveFileDialog {
+ Title = "备份数据库",
+ FileName = Path.GetFileName($"workdb.{DateTime.Now.ToString("yyyyMMdd")}.bak"),
+ };
+ var dresult = sdlg.ShowDialog();
+ if(dresult != DialogResult.OK) {
+ return;
+ }
+ var filePath = sdlg.FileName;
+ File.Copy(this.Db.SqliteDbfile,filePath);
+ MessageBox.Show("备份完成");
+ }
}
}