C# 小型数据库管理界面

来源:互联网 发布:matlab 矩阵赋值 编辑:程序博客网 时间:2024/05/10 12:24

C#第四天  写了一个数据库管理界面 包含到很多知识 也学到很多存一下 感觉搞得有点偏快  记录一下爬忘  初学者代码较low 

放一下 :)   背单词

数据库比较轻量,用的Access (学长连接好的 写好的类和方法)  是一个三级level1 level2 level3结构   

level1条目较少12条吧永恒不变 存到内存了     level2有独立的序列id,从属于第几条lvele1,本身的content,   还有存取的level3的多内容 以;;做分割符(条3专门写了个C++处理字符)



功能包含后两级的增删改

from布局大概也是这样 三级三列显示 name第一列label+"level1id"   第二列 Level2Label+"level2id"  第三列Level3Lable+"level3id" 

动态生成Label控件实现 操作(不知道优秀的C#程序员用什么方法)

页面的布局大概是这样


在作业项目和危险点分析下面有

作业总则定死的  作业项目 危险点分析是同态生成的Label控件


                                tableLayoutPanel1                                         Level2_panel                               Level3_panel

很low吧  - - 

实现增添删

删除直接提示 删除然后 

其中增加 修改 用到另一个含有输入框的LavelAllAdd窗体

删除就直接在DBManager上了

下面是DBManager代码

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.OleDb;using System.Text.RegularExpressions;namespace power_project.AppForm{    public partial class DBManager : Form    {        public String TmpLabName ="1";           public String TmpLv2Name = "1";        public String TmpLv3Name = "1";   //当前选中项        //String Level2Color = "0";     //记录颜色变化        //String Level3Color = "0";        power_project.Public_Class.DataAccessClass MyDataAccess = new Public_Class.DataAccessClass();  // 创建数据库对象        public DBManager()        {            InitializeComponent();        }                private void DBManager_Load(object sender, EventArgs e)        {        }     // 模拟hover特效        private void Level1_Enter(object sender, EventArgs e)        {            Label label = (Label)sender;            label.ForeColor = Color.Red;        }        private void Level1_Leave(object sender, EventArgs e)        {            Label label = (Label)sender;            label.ForeColor = Color.MediumBlue;        }               // endhover        private void Level1_Click(object sender, EventArgs e)        {            level2_panel.Controls.Clear();            int Level2_Rows = 0;            Label label = (Label)sender;            TmpLabName = label.Name.Substring(5);            //MessageBox.Show(TmpLabName);            OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("select * from tb_user_privilege where (level1_belong =" + TmpLabName+") order by id ASC");            while(tmpDR.Read())            {   Level2_Rows++;                Label lb = new Label();                lb.Name = "Level2Lable" + Level2_Rows;                lb.Text = TmpLabName+"-"+Level2_Rows+":"+tmpDR["level2_des"].ToString();                                lb.Width = 400;                lb.Height = 35;                lb.Click += new EventHandler(this.Level2_Click);                lb.BackColor = Color.White;                Point TP = new Point(0, 40 * (Level2_Rows - 1));                lb.Location = TP;                     level2_panel.Controls.Add(lb);            }        }       public void Level2_Click(object sender, EventArgs e)        {            TmpLv3Name = "1";    //初始化三 防止越界            level3_panel.Controls.Clear();         //清空布局            Label label = (Label)sender;            Control TmpLabForWhite = Controls.Find("Level2Lable" + TmpLv2Name, true)[0];      //清除先前设置的红色            TmpLabForWhite.BackColor = Color.White;            TmpLv2Name = label.Name.Substring(11);            TmpLabForWhite = Controls.Find("Level2Lable" + TmpLv2Name, true)[0];      //清除先前设置的红色            TmpLabForWhite.BackColor = Color.DodgerBlue ;            OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("select * from tb_user_privilege where level1_belong =" + TmpLabName + "and level2_id = " + TmpLv2Name);            if(tmpDR.Read())               //给leve3创建label            {                   string content = tmpDR["level3_des"].ToString();                string[] sArr = Regex.Split(content, ";;");                    for(int i=0;i<sArr.Length-1;i++)                {                    //MessageBox.Show(sArr[i]);                    Label lb = new Label();                    lb.Name = "Level3Lable" + (i+1).ToString();                    lb.Text = TmpLabName + "-" + TmpLv2Name + "-" + (i+1).ToString() + ":" + sArr[i].ToString();                    lb.Width = 400;                    lb.Height = 35;                    lb.BackColor = Color.White;                    lb.Click += new EventHandler(this.Level3_Click);                    Point TP = new Point(0, 40 * i);                    lb.Location = TP;                    level3_panel.Controls.Add(lb);                }            }        }        private void Level3_Click(object sender,EventArgs e)        {            Control TmpLabForWhite = Controls.Find("Level3Lable" + TmpLv3Name, true)[0];             TmpLabForWhite.BackColor = Color.White;            Label lb = (Label)sender;            lb.BackColor = Color.DodgerBlue;            TmpLv3Name = lb.Name.Substring(11);        }        private void Lb_Click(object sender, EventArgs e)        {            throw new NotImplementedException();        }        private void Level2_Add(object sender, EventArgs e)        {                AppForm.LevelAllAdd laa = new AppForm.LevelAllAdd(TmpLabName,TmpLv2Name,"level2add");                laa.ShowDialog();                Label TMPC = new Label();                TMPC.Name= "label" + TmpLabName.ToString();                  Level1_Click(TMPC,null);        }        private void Level2_Update(object sender, EventArgs e)        {            AppForm.LevelAllAdd laa = new AppForm.LevelAllAdd(TmpLabName, TmpLv2Name, "level2update");            laa.ShowDialog();            Label TMPC = new Label();            TMPC.Name = "label" + TmpLabName.ToString();            Level1_Click(TMPC, null);        }        private void Level2_De(object sender, EventArgs e)        {            if(MessageBox.Show("确认删除?","此删除不可恢复",MessageBoxButtons.YesNo)==DialogResult.Yes)            {                OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("delete from tb_user_privilege where level1_belong=" + TmpLabName + "and level2_id=" + TmpLv2Name);                OleDbDataReader tmpDRLevel2Rows = MyDataAccess.Read_Cmd("select count(*) as level2rows from tb_user_privilege where level1_belong=" + TmpLabName);                tmpDRLevel2Rows.Read();                               int st = Convert.ToInt32(TmpLv2Name) ;                       //循环启始                int en = Convert.ToInt32(tmpDRLevel2Rows["level2rows"]);        //循环末尾                             for (int i=Convert.ToInt32(TmpLv2Name);i<=en;i++)   //更新以后的id   i是新id                {                    OleDbDataReader tmpDR2 = MyDataAccess.Read_Cmd("update tb_user_privilege set level2_id =" + i.ToString() + " where level2_id=" + (i + 1).ToString());                    //MessageBox.Show("update tb_user_privilege set level2_id = " + i.ToString()+ " where level2_id = " + (i+1).ToString());                }                MessageBox.Show("成功删除:)");                Label TMPC = new Label();                TMPC.Name = "label" + TmpLabName.ToString();                Level1_Click(TMPC, null);            }        }            private void Level3_Add(object sender, EventArgs e)        {            AppForm.LevelAllAdd laa = new AppForm.LevelAllAdd(TmpLabName, TmpLv2Name, TmpLv3Name,"level3add");            laa.ShowDialog();            Label TMPC = new Label();            TMPC.Name = "Level2Lable" + TmpLv2Name.ToString();            Level2_Click(TMPC, null);        }        private void Level3_Update(object sender, EventArgs e)        {            AppForm.LevelAllAdd laa = new AppForm.LevelAllAdd(TmpLabName, TmpLv2Name, TmpLv3Name, "level3update");            laa.ShowDialog();            Label TMPC = new Label();            TMPC.Name = "Level2Lable" + TmpLv2Name.ToString();            Level2_Click(TMPC, null);        }        private void Level3_Delete(object sender, EventArgs e)        {            if(MessageBox.Show("确认删除","次删除不可恢复",MessageBoxButtons.YesNo)==DialogResult.Yes)            {                    LevelAllAdd laa = new LevelAllAdd();                    OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("select *from tb_user_privilege where level1_belong= " + TmpLabName + " and level2_id=" + TmpLv2Name);                    tmpDR.Read();                String TmpLevel3Delete = tmpDR["level3_des"].ToString();                    int TmpIndexst = 0;               //相应子串起始位置                    int TmpIndexen = 0;                 //相应字串终止位置                    //MessageBox.Show(TmpLevel3Delete);                    //MessageBox.Show("leve3更新操作");                    for (int i = 0; i < Convert.ToInt32(TmpLv3Name); i++)     //进行搜索相应下标                    {                        TmpIndexst = TmpIndexen;                      //改起始等于上一次终止                        TmpIndexen = laa.SplitForSemiconlon(TmpLevel3Delete.ToString(), TmpIndexst) + 2;   //返回标准的带;;的  完整st~en 下标                                           }                    String TmpFinalDelete = TmpLevel3Delete.Remove(TmpIndexst, TmpIndexen - TmpIndexst);                //MessageBox.Show("update tb_user_privilege set level3_des ='" + TmpFinalDelete + " '  where level1_belong= " + TmpLabName + " and level2_id= " + TmpLv2Name);                    OleDbDataReader tmpDR2 = MyDataAccess.Read_Cmd("update tb_user_privilege set level3_des ='" + TmpFinalDelete + " '  where level1_belong= " + TmpLabName + " and level2_id= " + TmpLv2Name);                MessageBox.Show("成功删除");                Label TMPC = new Label();                TMPC.Name = "Level2Lable" + TmpLv2Name.ToString();                Level2_Click(TMPC, null);            }        }    }}
下面是LevelAllAdd代码
窗体传递参数  用的是构造函数 (网上查也可用 public成员,还有另一种方法)
修改level2级内容 是有三个String参数的构造 ,level3直接表示操作
修改level3级内容 是有四个String参数的构造,levle3operate表示操作

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.OleDb;using System.Text.RegularExpressions;namespace power_project.AppForm{       public partial class LevelAllAdd : Form    {        power_project.Public_Class.DataAccessClass MyDataAccess = new Public_Class.DataAccessClass();        String level1="0";        String level2="0";        String level3="0";        String level3operate = "";        public LevelAllAdd()        {            InitializeComponent();        }        public LevelAllAdd(String level1,String level2,String level3)        {            this.level1 = level1;            this.level2 = level2;            this.level3 = level3;            InitializeComponent();        }        public LevelAllAdd(String level1, String level2, String level3,String level3operate)        {            this.level1 = level1;            this.level2 = level2;            this.level3 = level3;            this.level3operate = level3operate;            InitializeComponent();        }        public int SplitForSemiconlon(String str, int IndexSemiconlonOld)        {                     int IndexSemiconlonNew = str.IndexOf(";;", IndexSemiconlonOld );   //寻找;;的下标位置            return IndexSemiconlonNew;        }        private void LevelAllAdd_Load(object sender, EventArgs e)        { if (level3.Equals("level2update"))            {                OleDbDataReader tmpDRForShow = MyDataAccess.Read_Cmd("select *from tb_user_privilege where level1_belong= " + level1 + " and level2_id=" + level2);                tmpDRForShow.Read();                AddTextBox.Text = tmpDRForShow["level2_des"].ToString();            }          else if(level3operate.Equals("level3update"))            {                OleDbDataReader tmpDRForShow = MyDataAccess.Read_Cmd("select *from tb_user_privilege where level1_belong= " + level1 + " and level2_id=" + level2);                tmpDRForShow.Read();                string content = tmpDRForShow["level3_des"].ToString();                string[] sArr = Regex.Split(content, ";;");                AddTextBox.Text = sArr[Convert.ToInt32(level3)-1].ToString();            }        }        private void textBox1_TextChanged(object sender, EventArgs e)        {        }        private void button1_Click(object sender, EventArgs e)        { if(level3.Equals("level2add"))             //添加level2条            {                OleDbDataReader tmpDRForCount = MyDataAccess.Read_Cmd("select count(level2_id) as level2row from tb_user_privilege where level1_belong=" + level1);   //统计条数 编号level2_id                tmpDRForCount.Read();                String Level2Rows = tmpDRForCount["level2row"].ToString();                int ConveyNum = Convert.ToInt32(Level2Rows)+1;   //将string类型转换为int类型                Level2Rows = ConveyNum.ToString();                //MessageBox.Show(Level2Rows);                //MessageBox.Show(level1);                //MessageBox.Show(AddTextBox.Text);                OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("insert into tb_user_privilege(level1_belong,level2_des,level2_id) values (" + level1 + ",'" + AddTextBox.Text + "',"+Level2Rows+")");                MessageBox.Show("添加成功:)");                this.Close();            }          else if(level3.Equals("level2update"))    //更新level2条            {                //MessageBox.Show(level1);                //MessageBox.Show(level2);                //MessageBox.Show(AddTextBox.Text);                //MessageBox.Show("update tb_user_privilege set level2_des='" + AddTextBox.Text + "' where (level1_belong = " + level1 + " and level2_id = " + level2 + ")");                              OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("update tb_user_privilege set level2_des='"+AddTextBox.Text+"' where (level1_belong = "+level1+" and level2_id = "+level2+")");                MessageBox.Show("信息更新成功");                this.Close();            }          else                                      //level3操作            {                //MessageBox.Show(level3operate);          //先读取level3des                OleDbDataReader tmpDR = MyDataAccess.Read_Cmd("select *from tb_user_privilege where level1_belong= "+level1+" and level2_id="+level2);                tmpDR.Read();                  if (level3operate.Equals("level3add"))   //level3增加操作                  {                                            String TmpLevel3DesForAdd = tmpDR["level3_des"].ToString()+AddTextBox.Text+";;";                    //MessageBox.Show("修改后的信息" + TmpLevel3DesForAdd);                    OleDbDataReader tmpDR2 = MyDataAccess.Read_Cmd("update tb_user_privilege set level3_des ='"+TmpLevel3DesForAdd+" '  where level1_belong= "+level1+" and level2_id= "+level2);                    MessageBox.Show("信息添加成功");                    this.Close();                   }                  else  if (level3operate.Equals("level3update"))        //level3更新操作                {                                        String TmpLevel3Update = tmpDR["level3_des"].ToString();                    int TmpIndexst = 0;               //相应子串起始位置                    int TmpIndexen = 0;                 //相应字串终止位置                    //MessageBox.Show(TmpLevel3Update);                    //MessageBox.Show("leve3更新操作");                     for(int i=0;i<Convert.ToInt32(level3);i++)     //进行搜索相应下标                    {                        TmpIndexst = TmpIndexen;                   //改起始等于上一次终止                        TmpIndexen = SplitForSemiconlon(TmpLevel3Update.ToString(),TmpIndexst)+2;   //返回标准的带;;的  完整st~en 下标                        //MessageBox.Show(TmpIndexst.ToString() + " " + TmpIndexen.ToString());                        //MessageBox.Show(tmpDR["level3_des"].ToString().Substring(TmpIndexst,TmpIndexen-TmpIndexst));                    }                    String TmpForReplace = TmpLevel3Update.Substring(TmpIndexst, TmpIndexen - TmpIndexst);                    //MessageBox.Show(TmpForReplace);                    String TmpFinalUpdate = TmpLevel3Update.Replace(TmpForReplace, AddTextBox.Text+";;");                    //MessageBox.Show("Final" + TmpFinalUpdate);                    OleDbDataReader tmpDR2 = MyDataAccess.Read_Cmd("update tb_user_privilege set level3_des ='" + TmpFinalUpdate + " '  where level1_belong= " + level1 + " and level2_id= " + level2);                    //TmpLevel3Update.Remove(TmpIndexst, TmpIndexen - TmpIndexst);                    MessageBox.Show("信息更新成功");                    this.Close();                }                       }            return;        }        private void button2_Click(object sender, EventArgs e)        {            this.Close();        }    }}

效果就是后两级内容增删的功能实现了 3涉及一些分串操作(哎只能传<2Mb的)



原创粉丝点击