新增管理页,数据库压缩,清理和备份
This commit is contained in:
parent
e7f8aaed1f
commit
a96b0329d3
|
@ -2,6 +2,6 @@
|
||||||
<configuration>
|
<configuration>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
<add key="saveFileName" value="data.db"/>
|
<add key="saveFileName" value="data.db"/>
|
||||||
<add key ="sqliteFile" value="DataSource=work.db"/>
|
<add key ="sqliteFile" value="DataSource=work.db;"/>
|
||||||
</appSettings>
|
</appSettings>
|
||||||
</configuration>
|
</configuration>
|
|
@ -1,5 +1,7 @@
|
||||||
using CalendarNotepad.Models;
|
using CalendarNotepad.Models;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace CalendarNotepad.Extends
|
namespace CalendarNotepad.Extends
|
||||||
{
|
{
|
||||||
|
@ -18,11 +20,55 @@ namespace CalendarNotepad.Extends
|
||||||
IsAutoCloseConnection = false,
|
IsAutoCloseConnection = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化数据库
|
||||||
|
/// </summary>
|
||||||
public void DbInit() {
|
public void DbInit() {
|
||||||
using var db = new DbContext();
|
using var db = new DbContext();
|
||||||
db.CodeFirst.InitTables<WorkUnit>();
|
db.CodeFirst.InitTables<WorkUnit>();
|
||||||
db.CodeFirst.InitTables<PlusFileUnit>();
|
db.CodeFirst.InitTables<PlusFileUnit>();
|
||||||
db.CodeFirst.InitTables<WorkUnitPlusFile>();
|
db.CodeFirst.InitTables<WorkUnitPlusFile>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 清除数据库垃圾
|
||||||
|
/// </summary>
|
||||||
|
public string DbClean() {
|
||||||
|
StringBuilder sb = new();
|
||||||
|
int i;
|
||||||
|
i = this.Deleteable<WorkUnitPlusFile>()
|
||||||
|
.Where(a => !SqlFunc.Subqueryable<WorkUnit>().Where(b => b.WorkDay == a.WorkDay).Any())
|
||||||
|
.ExecuteCommand();
|
||||||
|
sb.AppendLine($"WorkUnitPlusFile 清除{i}条数据。");
|
||||||
|
|
||||||
|
i = this.Deleteable<PlusFileUnit>()
|
||||||
|
.Where(a => !SqlFunc.Subqueryable<WorkUnitPlusFile>().Where(b => b.FileKey == a.FileId).Any())
|
||||||
|
.ExecuteCommand();
|
||||||
|
sb.AppendLine($"PlusFileUnit 清除{i}条数据。");
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 压缩数据库文件
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
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}";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// sqllite数据库文件
|
||||||
|
/// </summary>
|
||||||
|
public string SqliteDbfile {
|
||||||
|
get {
|
||||||
|
var regex = new Regex(@"DataSource\s*=\s*(?<key>.*?);");
|
||||||
|
var mc = regex.Match(AppConfig.SqliteFileName);
|
||||||
|
var file = mc.Groups["key"].Value;
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
185
CalendarNotepad/WorkMain.Designer.cs
generated
185
CalendarNotepad/WorkMain.Designer.cs
generated
|
@ -52,11 +52,23 @@
|
||||||
cms_FileList = new ContextMenuStrip(components);
|
cms_FileList = new ContextMenuStrip(components);
|
||||||
删除ToolStripMenuItem = new ToolStripMenuItem();
|
删除ToolStripMenuItem = new ToolStripMenuItem();
|
||||||
导入ToolStripMenuItem = new ToolStripMenuItem();
|
导入ToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
下载ToolStripMenuItem = new ToolStripMenuItem();
|
||||||
toolStrip1 = new ToolStrip();
|
toolStrip1 = new ToolStrip();
|
||||||
tsp_Copy = new ToolStripButton();
|
tsp_Copy = new ToolStripButton();
|
||||||
tsb_palse = 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();
|
OpenFileDlg = new OpenFileDialog();
|
||||||
下载ToolStripMenuItem = new ToolStripMenuItem();
|
flowLayoutPanel4 = new FlowLayoutPanel();
|
||||||
|
label1 = new Label();
|
||||||
|
bt_m_Backup = new Button();
|
||||||
tabControl1.SuspendLayout();
|
tabControl1.SuspendLayout();
|
||||||
tpWorkManage.SuspendLayout();
|
tpWorkManage.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
|
((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit();
|
||||||
|
@ -70,11 +82,16 @@
|
||||||
C_WorkTypes.SuspendLayout();
|
C_WorkTypes.SuspendLayout();
|
||||||
cms_FileList.SuspendLayout();
|
cms_FileList.SuspendLayout();
|
||||||
toolStrip1.SuspendLayout();
|
toolStrip1.SuspendLayout();
|
||||||
|
tabPage1.SuspendLayout();
|
||||||
|
flowLayoutPanel3.SuspendLayout();
|
||||||
|
flowLayoutPanel2.SuspendLayout();
|
||||||
|
flowLayoutPanel4.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// tabControl1
|
// tabControl1
|
||||||
//
|
//
|
||||||
tabControl1.Controls.Add(tpWorkManage);
|
tabControl1.Controls.Add(tpWorkManage);
|
||||||
|
tabControl1.Controls.Add(tabPage1);
|
||||||
tabControl1.Dock = DockStyle.Fill;
|
tabControl1.Dock = DockStyle.Fill;
|
||||||
tabControl1.Location = new Point(0,0);
|
tabControl1.Location = new Point(0,0);
|
||||||
tabControl1.Name = "tabControl1";
|
tabControl1.Name = "tabControl1";
|
||||||
|
@ -329,22 +346,29 @@
|
||||||
//
|
//
|
||||||
cms_FileList.Items.AddRange(new ToolStripItem[] { 删除ToolStripMenuItem,导入ToolStripMenuItem,下载ToolStripMenuItem });
|
cms_FileList.Items.AddRange(new ToolStripItem[] { 删除ToolStripMenuItem,导入ToolStripMenuItem,下载ToolStripMenuItem });
|
||||||
cms_FileList.Name = "contextMenuStrip1";
|
cms_FileList.Name = "contextMenuStrip1";
|
||||||
cms_FileList.Size = new Size(181,92);
|
cms_FileList.Size = new Size(101,70);
|
||||||
//
|
//
|
||||||
// 删除ToolStripMenuItem
|
// 删除ToolStripMenuItem
|
||||||
//
|
//
|
||||||
删除ToolStripMenuItem.Name = "删除ToolStripMenuItem";
|
删除ToolStripMenuItem.Name = "删除ToolStripMenuItem";
|
||||||
删除ToolStripMenuItem.Size = new Size(180,22);
|
删除ToolStripMenuItem.Size = new Size(100,22);
|
||||||
删除ToolStripMenuItem.Text = "删除";
|
删除ToolStripMenuItem.Text = "删除";
|
||||||
删除ToolStripMenuItem.Click += 删除ToolStripMenuItem_Click;
|
删除ToolStripMenuItem.Click += 删除ToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
// 导入ToolStripMenuItem
|
// 导入ToolStripMenuItem
|
||||||
//
|
//
|
||||||
导入ToolStripMenuItem.Name = "导入ToolStripMenuItem";
|
导入ToolStripMenuItem.Name = "导入ToolStripMenuItem";
|
||||||
导入ToolStripMenuItem.Size = new Size(180,22);
|
导入ToolStripMenuItem.Size = new Size(100,22);
|
||||||
导入ToolStripMenuItem.Text = "导入";
|
导入ToolStripMenuItem.Text = "导入";
|
||||||
导入ToolStripMenuItem.Click += 导入ToolStripMenuItem_Click;
|
导入ToolStripMenuItem.Click += 导入ToolStripMenuItem_Click;
|
||||||
//
|
//
|
||||||
|
// 下载ToolStripMenuItem
|
||||||
|
//
|
||||||
|
下载ToolStripMenuItem.Name = "下载ToolStripMenuItem";
|
||||||
|
下载ToolStripMenuItem.Size = new Size(100,22);
|
||||||
|
下载ToolStripMenuItem.Text = "下载";
|
||||||
|
下载ToolStripMenuItem.Click += 下载ToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
// toolStrip1
|
// toolStrip1
|
||||||
//
|
//
|
||||||
toolStrip1.Items.AddRange(new ToolStripItem[] { tsp_Copy,tsb_palse });
|
toolStrip1.Items.AddRange(new ToolStripItem[] { tsp_Copy,tsb_palse });
|
||||||
|
@ -374,16 +398,139 @@
|
||||||
tsb_palse.Text = "粘贴";
|
tsb_palse.Text = "粘贴";
|
||||||
tsb_palse.Click += tsb_palse_Click;
|
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
|
||||||
//
|
//
|
||||||
OpenFileDlg.Multiselect = true;
|
OpenFileDlg.Multiselect = true;
|
||||||
//
|
//
|
||||||
// 下载ToolStripMenuItem
|
// flowLayoutPanel4
|
||||||
//
|
//
|
||||||
下载ToolStripMenuItem.Name = "下载ToolStripMenuItem";
|
flowLayoutPanel4.AutoSize = true;
|
||||||
下载ToolStripMenuItem.Size = new Size(180,22);
|
flowLayoutPanel4.Controls.Add(bt_m_Backup);
|
||||||
下载ToolStripMenuItem.Text = "下载";
|
flowLayoutPanel4.Controls.Add(label1);
|
||||||
下载ToolStripMenuItem.Click += 下载ToolStripMenuItem_Click;
|
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
|
// WorkMain
|
||||||
//
|
//
|
||||||
|
@ -414,6 +561,14 @@
|
||||||
cms_FileList.ResumeLayout(false);
|
cms_FileList.ResumeLayout(false);
|
||||||
toolStrip1.ResumeLayout(false);
|
toolStrip1.ResumeLayout(false);
|
||||||
toolStrip1.PerformLayout();
|
toolStrip1.PerformLayout();
|
||||||
|
tabPage1.ResumeLayout(false);
|
||||||
|
tabPage1.PerformLayout();
|
||||||
|
flowLayoutPanel3.ResumeLayout(false);
|
||||||
|
flowLayoutPanel3.PerformLayout();
|
||||||
|
flowLayoutPanel2.ResumeLayout(false);
|
||||||
|
flowLayoutPanel2.PerformLayout();
|
||||||
|
flowLayoutPanel4.ResumeLayout(false);
|
||||||
|
flowLayoutPanel4.PerformLayout();
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,5 +604,17 @@
|
||||||
private ToolStripMenuItem 导入ToolStripMenuItem;
|
private ToolStripMenuItem 导入ToolStripMenuItem;
|
||||||
private OpenFileDialog OpenFileDlg;
|
private OpenFileDialog OpenFileDlg;
|
||||||
private ToolStripMenuItem 下载ToolStripMenuItem;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -101,7 +101,7 @@ namespace CalendarNotepad
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WorkMain_Load(object sender,EventArgs e) {
|
private void WorkMain_Load(object sender,EventArgs e) {
|
||||||
mcWorkDay_DateChanged(null,null);
|
mcWorkDay_DateChanged(sender,new DateRangeEventArgs(this.mcWorkDay.SelectionStart,this.mcWorkDay.SelectionEnd));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -166,7 +166,7 @@ namespace CalendarNotepad
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btReset_Click(object sender,EventArgs e) {
|
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();
|
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("备份完成");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user