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("备份完成"); + } } }