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>=) //判断是否选择了行
{
//控件中,获取选中的水果名。dataGridView1[列, 行]
          //selectedName=Convert.ToString( dataGridView1.Rows[e.RowIndex].Cells[0].Value).Trim();
                selectedName = Convert.ToString(dataGridView1[, 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

EF 操作数据库中的表的更多相关文章

  1. 关于python+django操作数据库中的表

    数据库中的表示这样设计的 class C(models.Model): name = models.CharField(max_length=32) class B(models.Model): na ...

  2. 02-2--数据库MySQL:DDL(Data Definition Language:数据库定义语言)操作数据库中的表(二)

    DDL对数据库的操作:http://blog.csdn.net/baidu_37107022/article/details/72334560 DDL对数据库中表的操作 1)方法概览 2)演示 //创 ...

  3. JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法

    黑马程序员 我们知道,在设计一个Javabean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对 ...

  4. EF操作数据库的步骤和一些简单操作语句

    这里是写给我自己做记录的,不会写成一篇很好的博客,也不会置顶,如果有朋友看到了,而且觉得里面的内容不咋的,希望见谅哈! 关于这部分内容,这里推荐一篇总结的非常好的博客,如果你点击进来了,那么请略过下面 ...

  5. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

  6. SQLServer 命令批量删除数据库中指定表(游标循环删除)

    DECLARE @tablename VARCHAR(30),@sql VARCHAR(500)DECLARE cur_delete_table CURSOR READ_ONLY FORWARD_ON ...

  7. 【Sqlserver清空数据库中所有表数据】

    脚本: CREATE PROCEDURE sp_DeleteAllData AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT AL ...

  8. 清空SQL Server数据库中所有表数据的方法

    原文:清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可 ...

  9. 菜鸡之NetCore 使用EF操作数据库 Oracle & Sqlserver (一)

    摘要: 该篇文章主要记录netCore EFCore 如何操作Oracle和SqlServer 数据库,采用Codefirst方式创建数据库以及表. 一, 项目建立 项目采用DDD领域驱动设计模式[学 ...

随机推荐

  1. PTA(Advanced Level)1065.A+B and C

    Given three integers A, B and C in [−263,263], you are supposed to tell whether A+B>C. Input Spec ...

  2. (5.9)mysql高可用系列——正常主从切换测试

    [0]实验环境 操作系统:CentOS linux 7.5 数据库版本:5.7.24 数据库架构:主从复制,主库用于生产,从库用于数据容灾和主库备机,采用默认传统的异步复制. 主库IP:192.168 ...

  3. C++常见面试题:

    一.进程和线程的概念和区别 1.进程是系统进行资源调度的基本单位 2.线程是系统进行运算调度(处理器分配{CPU.内存})的基本单位 二.进程间的通信 进程间的通信共有5种: 1.管道 通常指无名管道 ...

  4. const和static const的区别(未整理)

    对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调 ...

  5. 更换composer镜像源为阿里云

    ​ 说一说我为什么会更换镜像源,今天我准备给公司的项目添加一个 Excel 导出的功能,需要 PhpSpreadsheet 插件来实现我的功能.输入命令发现提示我 Authentication req ...

  6. CentOS7部署Tomcat服务器

    1. 软件 存放路径:/usr/local/src apache-tomcat-9.0.22.tar.gz openjdk-12_linux-x64_bin.tar.gz 2.事先配置 启动后关闭防火 ...

  7. linux环境下tomcat启动成功,部分请求页面出现404

    这种情况很多,本文记录我遇到比较奇葩的情况. 第一种情况: 第一次tomact启动成功,访问404,乱捣鼓不知怎么好了:第二次tomcat启动成功,可以访问部分链接,有些却报404,但是代码和数据都还 ...

  8. ArrayList扩容分析

    一段java代码 String e = "q3234v"; List<String> list = new ArrayList<String>(); for ...

  9. js制作留言板

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. python:enumerate 函数

    说明 enumerate()是python的内置函数: 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 多用于 ...