zoukankan      html  css  js  c++  java
  • EF 操作数据库中的表

    1、VS创建项目(实现数据库的增删改查、并在dataGridView中展示)

    增、改通过Button,删通过快捷菜单ContextMenuStrip控件(DateGridView控件的ContextMenuStrip属性中要选择),查通过dataGridView单元格单击事件

    2、SQL Server中查看自己创建的数据库

    3、VS中创建实体数据模型

    在已创建的项目上,鼠标右键,添加,新建项,Visual C#项,ADO.NET实体数据模型

    来自数据库的EF设计器,下一步

    新建连接,输入服务器名,具体如下:

     

    具体代码如下:

    using System;
    using System.Data;
    using System.Data.Entity; //引用数据实体
    using System.Linq;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            string selectedName; //记录被选中的名称
    
            private void Form1_Load(object sender, EventArgs e)
            {
                using(TestEntities2 db=new TestEntities2()) //实体(entity)模型对象
                {
                    dataGridView1.DataSource = db.Table_1.ToList();//控件中显示表中所有信息
                }
            }
    
            private void button1_Click(object sender, EventArgs e) //
            {
                using(TestEntities2 db=new TestEntities2()) 
                {
                    Table_1 table = new Table_1 //表的对象
                    {
                        Name = textBox1.Text, //为字段赋值
                        Price =Convert.ToInt32(textBox2.Text)
                    };
                    //通过实体来操纵数据库中的表
                    db.Table_1.Add(table);//
                    db.SaveChanges();//执行命令
                    dataGridView1.DataSource = db.Table_1.ToList();//重新展示数据源
                }
            }
    
            private void button2_Click(object sender, EventArgs e) //
            {
                using (TestEntities2 db=new TestEntities2 ())
                {
                    Table_1 table = new Table_1 //表的对象
                    {
                        Name = textBox1.Text,  //Name是主键,不能修改
                        Price = Convert.ToInt32(textBox2.Text) //修改Price字段内容
                     };
                    db.Entry(table).State = EntityState.Modified; //
                    db.SaveChanges(); //执行命令
                    dataGridView1.DataSource = db.Table_1.ToList(); //展示
                }
            }
    
            private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) //删,快捷菜单中实现
            {
                using (TestEntities2 db=new TestEntities2 ())
                {
                    //控件中水果名,来锁定数据库表中商品所在行
                    Table_1 table = db.Table_1.Where(W => W.Name == selectedName).FirstOrDefault(); //lambda表达式
                    if (table!=null)
                    {
                        db.Table_1.Remove(table); //
                        db.SaveChanges(); //执行命令
                        dataGridView1.DataSource = db.Table_1.ToList();
                        MessageBox.Show("删除成功!");
                    }
                    else
                    {
                        MessageBox.Show("请选择要删除的内容!");
                    }               
                }
            }
    
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) //查,鼠标点击单元格,注意是CellClick事件
            {
                if (e.RowIndex>=0) //判断是否选择了行
                {
                    //控件中,获取选中的水果名。dataGridView1[列, 行]
              //selectedName=Convert.ToString( dataGridView1.Rows[e.RowIndex].Cells[0].Value).Trim();
                    selectedName = Convert.ToString(dataGridView1[0, e.RowIndex].Value).Trim(); 
                    using (TestEntities2 db=new TestEntities2() )
                    {
                        //获取选中对象所在的行(Name是数据表的主键)
                        Table_1 table = db.Table_1.Where(W => W.Name == selectedName).FirstOrDefault();
                        if (table!=null) //不为空,则展示此水果的行内容
                        {
                            textBox1.Text = table.Name;
                            textBox2.Text = table.Price.ToString();
                        }
                    }
                }
            }
        }
    }

    参考博客 https://blog.csdn.net/qq_36598803/article/details/77664976

  • 相关阅读:
    MySQl查询语句大全
    并发编程三
    并发编程二
    并发编程
    网络编程
    面向对象高级进阶
    python中的面向对象和面向过程
    为什么还需要学习TypeScript
    Chrome 神器,神奇的技巧
    vue-property-decorator知识梳理
  • 原文地址:https://www.cnblogs.com/xixixing/p/10808634.html
Copyright © 2011-2022 走看看