数据库操作是sql的操作1

项目过来以后,

先肯定是做UI ,

1.在UI层先加载

2数据来源在dal层,

3再到model层,得到属性

1   public int MId { get; set; }
2         public string MName { get; set; }
3         public string MPwd { get; set; }
4         public int MType { get; set; } 

4再到dal这时候有属性了 做查询

 1 //步骤
 2 1.构造sql 语句
 3 //1构造要查询的sql语句
 4             string sql = "select * from ManagerInfo";
 5             //2使用helper进行查询,得到结果
 6             DataTable dt = SqliteHelper.GetDataTable(sql);
 7             //3将dt中的数据转存到list中
 8             List<ManagerInfo> list=new List<ManagerInfo>();
 9            //4触发器
10             foreach (DataRow row in dt.Rows)
11             {
12                 list.Add(new ManagerInfo()
13                 {
14                     MId = Convert.ToInt32(row["mid"]),
15                     MName = row["mname"].ToString(),
16                     MPwd = row["mpwd"].ToString(),
17                     MType = Convert.ToInt32(row["mtype"])
18                 });
19             }
20             //将集合返回
21             return list;

5.得到数据后到Bll 层进行调用

 //1创建数据层对象
        ManagerInfoDal miDal = new ManagerInfoDal();
        //2.因为要在UI层进行得到表格所有要定义GetList
        public List<ManagerInfo> GetList()
        {
            //调用查询方法
            return miDal.GetList();

6.得到GetList后,然后到UI层进行数据加载


    /1/创建业务逻辑层对象
   ManagerInfoBll miBll = new ManagerInfoBll();



1
private void FormManagerInfo_Load(object sender, EventArgs e) 2 { 3 //2加载列表 4 LoadList(); 5 } 6 7 private void LoadList() 8 { 9 //禁用列表的自动生成 10 dgvList.AutoGenerateColumns = false; 11 //3调用方法获取数据,绑定到列表的数据源上 12 dgvList.DataSource = miBll.GetList(); 13 }

7.链接数据库 再写配置文件

 1 <connectionStrings> 2 <add name="itcastCater" connectionString="data source=C:Usersq1DesktopItcastCater.db;version=3;"/> 3 </connectionStrings> 

注意点,其必须每个类都是 partial


增加

按理说先写model ,但是model 已经有了

所有

1.从dll层开始写

 1      /// <summary>
 2         /// 插入数据
 3         /// </summary>
 4         /// <param name="mi">ManagerInfo类型的对象</param>
 5         /// <returns></returns>
 6         public int Insert(ManagerInfo mi)
 7         {
 8             //1.构造insert语句
 9             string sql = "insert into ManagerInfo(mname,mpwd,mtype) values(@name,@pwd,@type)";
10             //2.构造sql语句的参数
11             SQLiteParameter[] ps = //使用数组初始化器
12             {
13                 new SQLiteParameter("@name", mi.MName),
14                 new SQLiteParameter("@pwd", Md5Helper.EncryptString(mi.MPwd)),//将密码进行md5加密
15                 new SQLiteParameter("@type", mi.MType)
16             };
17             //3.执行插入操作
18             return SqliteHelper.ExecuteNonQuery(sql, ps);
19         }

2.到bll 层 1 public bool Add(ManagerInfo mi) 2

{ 3 //调用dal层的insert方法,完成插入操作

4 return miDal.Insert(mi) > 0; 5 } 

3.到UI层 由于此时添加同时也有修改添加的左右所有

  private void btnSave_Click(object sender, EventArgs e)
        {
            //1接收用户输入
            ManagerInfo mi = new ManagerInfo()
            {
                MName = txtName.Text,
                MPwd = txtPwd.Text,
                MType = rb1.Checked ? 1 : 0 //经理值为1,店员值为0
            };
            if (txtId.Text.Equals("添加时无编号"))//添加逻辑没有这个
            {
                #region 添加
                //调用bll的Add方法
                if (miBll.Add(mi))
                {
                    //如果添加成功,则重新加载数据
                    LoadList();
                }
                else
                {
                    MessageBox.Show("添加失败,请稍候重试");
                }

                #endregion
            }
            else
            {
                #region 修改

                mi.MId = int.Parse(txtId.Text);
                if (miBll.Edit(mi))
                {
                    LoadList();
                }

                #endregion
            }

            //清除文本框中的值
            txtName.Text = "";
            txtPwd.Text = "";
            rb2.Checked = true;
            btnSave.Text = "添加";
            txtId.Text = "添加时无编号";
        }

在这个时候.要判断类型,是经理还是店员要进行格式化,  e.Value = Convert.ToInt32(e.Value) == 1 ? "经理" : "店员";

1.在dal里面

   /// <summary>
        /// 修改管理员,特别注意:密码
        /// </summary>
        /// <param name="mi"></param>
        /// <returns></returns>
        public int Update(ManagerInfo mi)
        {
            //为什么要进行密码的判断:
            //答:因为密码值是经过md5加密存储的,当修改时,需要判断用户是否改了密码,如果没有改,则不变,如果改了,则重新进行md5加密

            //定义参数集合,可以动态添加元素
            List<SQLiteParameter> listPs=new List<SQLiteParameter>();
            //构造update的sql语句
            string sql = "update ManagerInfo set mname=@name";
            listPs.Add(new SQLiteParameter("@name",mi.MName));
            //判断是否修改密码
            if (!mi.MPwd.Equals("这是原来的密码吗"))
            {
                sql += ",mpwd=@pwd";
                listPs.Add(new SQLiteParameter("@pwd",Md5Helper.EncryptString(mi.MPwd)));
            }
            //继续拼接语句
            sql+=",mtype=@type where mid=@id";
            listPs.Add(new SQLiteParameter("@type",mi.MType));
            listPs.Add(new SQLiteParameter("@id",mi.MId));
            
            //执行语句并返回结果
            return SqliteHelper.ExecuteNonQuery(sql, listPs.ToArray());
        }

再到Bll层

public bool Edit(ManagerInfo mi)
{
return miDal.Update(mi) > 0;
}

 删除

1.先到Dal层

 1   /// <summary>
 2         /// 根据编号删除管理员
 3         /// </summary>
 4         /// <param name="id"></param>
 5         /// <returns></returns>
 6         public int Delete(int id)
 7         {
 8             //1构造删除的sql语句
 9             string sql = "delete from ManagerInfo where mid=@id";
10             //2根据语句构造参数
11             SQLiteParameter p=new SQLiteParameter("@id",id);
12             //3执行操作
13             return SqliteHelper.ExecuteNonQuery(sql, p);
14         }

在到bll层

public bool Remove(int id)
{
return miDal.Delete(id) > 0;


}

在到UI层

 1   private void btnRemove_Click(object sender, EventArgs e)
 2         {
 3             //获取选中的行
 4             var rows = dgvList.SelectedRows;
 5             if (rows.Count > 0)
 6             {
 7                 //删除前的确认提示
 8                 DialogResult result= MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.OKCancel);
 9                 if (result == DialogResult.Cancel)
10                 {
11                     //用户取消删除
12                     return;
13                 }
14 
15                 //获取选中行的编号
16                 int id = int.Parse(rows[0].Cells[0].Value.ToString());
17                 //调用删除的操作
18                 if (miBll.Remove(id))
19                 {
20                     //删除成功,重新加载数据
21                     LoadList();
22                 }
23             }
24             else
25             {
26                 MessageBox.Show("请先选择要删除的行");
27             }
28         }
原文地址:https://www.cnblogs.com/liuweiqiang11188/p/6682547.html