using System;
using System.Data;
using System.Windows.Forms;
using DotNet.Utilities; namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataTableCollection dt = null;
//查询原始内容
private void button1_Click(object sender, EventArgs e)
{
string sql = @"SELECT r.RegionID, RTRIM(r.RegionDescription)RegionDescription FROM Region AS r";
dt = SqlHelper.GetTableText(sql, null);
dataGridView1.DataSource = dt[0];
} //增加内容
private void button2_Click(object sender, EventArgs e)
{
DataRow dr = dt[0].NewRow();
dr["RegionID"] = textBox2.Text;
dr["RegionDescription"] = textBox3.Text;
dt[0].Rows.Add(dr);
} //修改内容
private void button3_Click(object sender, EventArgs e)
{
DataRow dr = dt[0].Rows[dataGridView1.CurrentRow.Index];
dr.BeginEdit();
dr["RegionID"] = textBox2.Text;
dr["RegionDescription"] = textBox3.Text;
dr.EndEdit(); } //删除内容
private void button4_Click(object sender, EventArgs e)
{
dt[0].Rows[dataGridView1.CurrentRow.Index].Delete();
} //保存内容,根据DataTable生成Sql语句
private void button5_Click(object sender, EventArgs e)
{
textBox4.Clear();
DataTable dtSave = dt[0].GetChanges();
if (dtSave != null)
{
foreach (DataRow item in dtSave.Rows)
{
if (item.RowState == DataRowState.Added)
{
string str = @"
INSERT INTO Region
(
RegionID,
RegionDescription
)
VALUES
(
" + item.ItemArray[0] + @",
'" + item.ItemArray[1] + @"'
)
";
textBox4.Text += str + "\r\n";
textBox4.Text += "----------------------------------------------------------------------------------------" + "\r\n";
}
else if (item.RowState == DataRowState.Modified)
{
string str = @"
UPDATE Region
SET
RegionDescription = '" + item.ItemArray[1] + @"'
WHERE RegionID=" + item.ItemArray[0];
textBox4.Text += str + "\r\n";
textBox4.Text += "----------------------------------------------------------------------------------------" + "\r\n";
}
else if (item.RowState == DataRowState.Deleted)
{
string str = @"
DELETE FROM Region
WHERE RegionID=" + item[0, DataRowVersion.Original];
textBox4.Text += str + "\r\n";
textBox4.Text += "----------------------------------------------------------------------------------------" + "\r\n";
}
}
//这里增加事务执行SQL语句到数据库
//dt[0].AcceptChanges();//保存后清除行状态
}
} private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataRow dr = dt[0].Rows[dataGridView1.CurrentRow.Index];
textBox2.Text = dr["RegionID"].ToString();
textBox3.Text = dr["RegionDescription"].ToString();
}
}
}

只根据DataTable生成Sql语句,Devexpress GridControl控件获取索引用 gridView1.GetSelectedRows()[0]

数据库操作类使用https://gitee.com/kuiyu/dotnetcodes开源项目中的SqlHelper

DataTable 增加、修改、删除的更多相关文章

  1. Oracle 增加修改删除字段

    Oracle 增加修改删除字段 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],…. ...

  2. Oracle 增加修改删除字段与添加注释

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter ...

  3. hibernate 批量增加 修改 删除

    4.2  Hibernate的批量处理 Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作.例如调用Session的delete ...

  4. Oracle-表的字段增加修改删除操作

    表结构修改 ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名 ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME ...

  5. js jquery select 操作 获取值,选中选项,增加,修改,删除

    select示例: <select id="sel"> <option value="1">one</option> < ...

  6. Oracle 增加 修改 删除 列

    语法结构如下: alter table tablename add (column datatype [default value][null/not null],….); alter table t ...

  7. ado.net c#基本的增加,修改,删除,查询

    自己初次学习用的,各种不规范,注释没写 class AdoDemo { static string strConn = @"Data Source=server1;Initial Catal ...

  8. openlayers中实现点的拖拽(modify),在layer中增加修改删除point。

    最近忙着整地图,都忘记了总结来沉淀自己,自我检讨一下. 总结一下最近使用openlayer时学习的内容,先说下我的业务逻辑吧,在室内地图中 1,点击新增在地图上新增一个可以拖拽的点,拖拽完成后确定位置 ...

  9. iOS --SQL的增加、删除、查找、修改

    iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...

  10. Oracle表字段的增加、删除、修改和重命名

    本文主要是关于Oracle数据库表中字段的增加.删除.修改和重命名的操作. 增加字段语法:alter table tablename add (column datatype [default val ...

随机推荐

  1. docker版LAMP(PHP+MYSQL+APACHE)配置

    最近在搭测试环境,一开始就在vagant和docker之间来回折腾.两者其实都非常适合用来搭开发环境:但最终让我决定用Docker的原因是因为Vagant在hyper-v下出现了一些奇怪的问题,所以D ...

  2. Go interface 原理剖析--类型转换

    hi, 大家好,我是 haohognfan. 可能你看过的 interface 剖析的文章比较多了,这些文章基本都是从汇编角度分析类型转换或者动态转发.不过随着 Go 版本升级,对应的 Go 汇编也发 ...

  3. (纯js)如何不刷新网页就能链接新的js文件

    如何不刷新网页就能链接新的js文件,其实在HTML语言中已经有相关的函数了,就是再添加一个<script src=.....></script>. 函数叫document.bo ...

  4. TCP拥塞控制详解

    1. 拥塞原因与代价 拥塞的代价 当分组的到达速率接近链路容量时,分组经历巨大的排队时延. 发送方必须执行重传以补偿因为缓存溢出而丢弃的分组. 发送方在遇到大时延时进行的不必要重传会引起路由器利用其链 ...

  5. 定制bash命令提示符

    使用shell时经常要知道当前路径,如果将它写在提示符里很节省很多敲pwd的动作,方法是在启动文件(.bash_profile, .bashrc)里加上: export PS1="[\u@\ ...

  6. Git 使用revert回滚已提交的commit

    在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...

  7. Grid布局如何设置动画效果

    CS代码 新增 GridLengthAnimation继承自AnimationTimeline public class GridLengthAnimation : AnimationTimeline ...

  8. MySQL学习02(操作数据库)

    操作数据库 结构化查询语句分类 名称 解释 命令 DDL(数据库定义语言) 定义和管理数据对象,例如数据库和数据表 create.drop.alter DML(数据操作语言) 用于操作数据库对象中所包 ...

  9. JavaScript学习03(函数)

    函数 函数定义 JavaScript 函数是通过 function 关键词定义的. 声明定义 function functionName(parameters) { 要执行的代码 } 被声明的函数不会 ...

  10. HandlerInterceptor与WebRequestInterceptor的异同

    相同点 两个接口都可用于Contrller层请求拦截,接口中定义的方法作用也是一样的. //HandlerInterceptor boolean preHandle(HttpServletReques ...