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. Mongodb集成LDAP授权

    一.环境简介 Mongodb enterprise v4.0.16 OpenLDAP v2.4.44 二.Mongodb集成LDAP的授权过程 客户端指定某种外部验证方式链接Mongodb: Mong ...

  2. 寄生线虫免疫学研究新路径!华中农业大学胡敏团队报道寄生线虫N-糖基化修饰图谱

    N-糖基化修饰是真核生物中一种重要的蛋白质翻译后修饰,在许多生物学过程中起着关键作用,包括蛋白质折叠.受体-配体相互作用.免疫应答和疾病发病机制等.近年来,高精度质谱技术的出现促进了糖组和糖蛋白质组的 ...

  3. CTF_论剑场_Web25

    点击xiazai后面发现404,没办法打开,抓包也没发现啥,用御剑扫描了下发现还有新的页面 点击会跳转到flag.php这个文件,这里应该才是真正的提交页面 另外前面提示了一个ziidan.txt在s ...

  4. dubbo学习实践(3)之Dubbo整合Consul及Dubbo配置方式

    前言:上一篇中,已经写到了使用zookeeper为注册中心的配置,下面写下配置Consul为注册中心 1. Consul注册中心验证 修改provider和consumer的服务配置文件 Provid ...

  5. Java多线程间的数据共享

    下面的程序演示了一个对象被两个线程访问的方法,"monitor.gotMessage();"这一句虽然是monitor对象的方法,但却是运行在"MyObject" ...

  6. 在Linux系统上查找文件

    Find命令 格式:find <指定搜索范围> <指定条件> <指定动作> 其中搜索范围是一个目录名,指定条件包括文件名.文件属性(修改时间所属用户等).所在位置特 ...

  7. CNVD-2021-14536 锐捷 RG-UAC 统一上网行为管理审计系统信息泄露漏洞

    漏洞简介 锐捷 RG-UAC 统一上网行为管理审计系统存在信息泄露,攻击者通过网页源代码可间接获取管理用户账号密码,登录管理后台. 漏洞复现 fofa搜索以下关键字 title="RG-UA ...

  8. 【Python机器学习实战】决策树和集成学习(二)——决策树的实现

    摘要:上一节对决策树的基本原理进行了梳理,本节主要根据其原理做一个逻辑的实现,然后调用sklearn的包实现决策树分类. 这里主要是对分类树的决策进行实现,算法采用ID3,即以信息增益作为划分标准进行 ...

  9. APIO 2007 动物园 题解

    链接题面 看清楚找到小数据范围,第一维表示遍历到的栅栏,第二维是五位状态 先预处理每个状态会使多少小朋友高兴 方程是  f[i][j]=max(f[(i&((1<<4)-1))&l ...

  10. shell 函数返回值与字典

    shell的函数只能返回整数值,如果想让函数返回字符串可以在函数调用处为变量赋值. # 定义函数function test() { name=$1 echo "123213" } ...