20150222—LINQ to SQL 插入、更新和删除
注意,使用LINQ to SQL时, 表中必须有一个主键才可以起效,否则系统将无法对数据作出修改
插入新数据,根据上一片的文章实例在其中添加新的控件:
编号TextBox(Name):sno
名字TextBox(Name):sname
性别TextBox(Name):ssex
生日DateTimePicker(Name):bir
班级TextBox(Name):sclass
以及 添加按钮

下面是添加按钮中的代码:
private void tianjia_Click(object sender, EventArgs e)
{
string sno = bianhao.Text.Trim();//编号TextBox
string sname = mingzi.Text.Trim();//名字TextBox
string ssex = xingbie.Text.Trim();//性别TextBox
DateTime bir = shengri.Value;//生日
string sclass = banji.Text.Trim();//班级TextBox if (sno != "" || sname != "" || ssex != "" || sclass != "")
{
DataClasses1DataContext dc = new DataClasses1DataContext();
//根据要添加信息的表的表名初始化这个表的类
Student stu = new Student
{
Sno = sno,
Sname = sname,
Ssex = ssex,
Sbirthday = bir,
Class = sclass,
};
//以下两行代码是修改数据库的重要代码,不能遗漏,否则会无法修改数据
dc.Student.InsertOnSubmit(stu);//修改内存中的数据
dc.SubmitChanges();//将修改的数据写入到数据库中。 MessageBox.Show("添加成功!");
}
else
{
MessageBox.Show("请填入完整信息");
}
}
尝试添加新的数据,(注意,使用LINQ to SQL时, 表中必须有一个主键才可以起效,否则系统将无法对数据作出修改)

再次查询的结果:

更新(修改)数据:
首先修改一下GridView的属性,以方便我们的操作,把行为中 SelectionMode 的值改为FullRowSelect,选中一行

然后在GridView中添加一个新的事件(在DoubleClick的右面双击即可):

在窗体中添加新的控件:
编号TextBox(Name):xiugai_bianhao;固定编号,将其属性--行为—Enabled修改为False
名字TextBox(Name):xiugai_mingzi
性别TextBox(Name):xiugai_xingbie
生日DateTimePicker(Name):xiugai_shengri
班级TextBox(Name): xiugai_banji
以及修改按钮

然后在刚刚新建的双击事件中写入以下代码:
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
//这里的代码只是将选中信息写入到修改分组中
xiugai_bianhao.Text = dataGridView1.SelectedCells[0].Value.ToString().Trim();//编号
xiugai_mingzi.Text = dataGridView1.SelectedCells[1].Value.ToString().Trim();//名字
xiugai_xingbie.Text = dataGridView1.SelectedCells[2].Value.ToString().Trim();//性别
xiugai_shengri.Value =DateTime.Parse(dataGridView1.SelectedCells[3].Value.ToString());//生日
xiugai_banji.Text = dataGridView1.SelectedCells[4].Value.ToString().Trim();//班级
}
注:查询选中的一行中的单元格,其单元格的索引从左到右依次为0,1,2,3,…..
修改按钮:
private void button3_Click(object sender, EventArgs e)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); var xiu = dc.Student.Single(m => m.Sno == xiugai_bianhao.Text);//根据编号确定所在行
xiu.Sname= xiugai_mingzi.Text.Trim();// 修改 名字
xiu.Ssex = xiugai_xingbie.Text.Trim();// 性别
xiu.Sbirthday = xiugai_shengri.Value;//生日
xiu.Class = xiugai_banji.Text.Trim();//班级 dc.SubmitChanges();//重要代码 不要遗漏 }
双击某一行:

然后在修改数据一组中修改数据:

点击修改,再次查询。

修改成功。
删除数据:
添加删除按钮,写入代码:
private void button4_Click(object sender, EventArgs e)
{
DataClasses1DataContext dc = new DataClasses1DataContext(); var del = dc.Student.Single(m => m.Sno == dataGridView1.SelectedCells[0].Value);//根据编号确定要删除的数据
dc.Student.DeleteOnSubmit(del);//删除语句 dc.SubmitChanges();//重要代码 不要遗漏
}

选中一行点击删除按钮,再次查询:

删除成功。
20150222—LINQ to SQL 插入、更新和删除的更多相关文章
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据 (转)
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...
- SQL.Cookbook 读书笔记4 插入更新和删除
第四章 插入更新和删除 4.1 插入数据 ,'PROGRA','NEW YOURK'); 4.2 从一个表向另一个表中复制 insert into dept_east(deptno,dname,loc ...
- mySQL 教程 第5章 插入 更新与删除数据
使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 为表中所有字段插入数据,可以不 ...
- MySQL入门很简单: 9 插入 更新与删除数据
1. 插入数据:INSERT 1)为表的所有字段插入数据 第一种: 不指定具体的字段名 INSERT INTO 表名 VALUES(值1,值2,...,值n): 第二种:INSERT语句中列出所有字段 ...
- mySQL 插入,更新和删除数据
插入数据: 语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如 ...
- SQL Server-已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行
在更新没有设置主键的表的时候出现下图中的问题: 问题原因: 这种问题大多是由于没有主键(PK)导致同一张表中存在若干条相同的数据 DBMS存储时,只为其存储一条数据,因为DBMS底层做了优化,以减少数 ...
- MySQL笔记(三)之数据插入更新与删除
INSERT INTO INSERT INTO 语句用于向表格中插入新的行. 语法: INSERT INTO 表 VALUES (值1, 值2,....) # 列数必须和值的个数匹配 INSERT I ...
- linq to sql 不能更新的问题
今天在项目中用linq更新一个表的时候,结果怎么都更新不了,最蛋疼的是什么异常也不报,发现db.table1.isReadOnly为True 知道问题所在,百度后得到解决办法: 原来是我的表没有增加主 ...
随机推荐
- TOJ3650 Legal or Not
Legal or Not Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte Total Submit: 41 ...
- [Angular2 Router] Exiting an Angular 2 Route - How To Prevent Memory Leaks
In this tutorial we are going to learn how we can accidentally creating memory leaks in our applicat ...
- IOS触摸事件和手势识别
IOS触摸事件和手势识别 目录 概述 触摸事件 手势识别 概述 为了实现一些新的需求,我们常常需要给IOS添加触摸事件和手势识别 触摸事件 触摸事件的四种方法 -(void)touchesBegan: ...
- 主流手持设备GPU性能比较
设备 GPU CPU 每秒像素填充率 每秒三角形生成 内存 iPhone4 PowerVR SGX 535 ARM Cortex-A8 800M 512M iPod touch 4 Power ...
- 终端I/O之综述
终端I/O有两种不同的工作模式: 规范模式输入处理(Canonical mode input processing).在这种模式中,终端输入以行为单位进行处理.对于每个读要求,终端驱动程序最多返回一行 ...
- nexus-2.13.0-01.war
https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.13.0-01.war
- QStyle 新风格的实现
摸索了很久,实际实现才发现很简单. 利用qt助手搜style可以发现style的实现和qapplication有关,在Qapplication里面搜到函数: void QApplication:: ...
- win7配置nginx+php步骤
1.下载nginx: http://www.nginx.cn/nginx-download 2.下载php : http://www.php.net/downloads.php (线程安全与非安全参 ...
- 安装TortoiseGit出现提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”-解决方法
我的系统是xp sp3安装TortoiseGit时出现了错误提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”. 解决方法,到微软官方下载相 ...
- Json格式理解
json格式中共有三个重要符号"[","{",":" 中括号和花括号的唯一区别就是:中括号不需要key,花括号必须有key