DataAdapter的使用,批量增删改

1.使用DataAdapter查询

 private void Select2()
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); if (dataTable != null)
{
for (int i = ; i < dataTable.Rows.Count; i++)
{
DataRow row = dataTable.Rows[i];
string name = row["name"].ToString();
int age = int.Parse(row["age"].ToString()); textBox1.Text += $"name:{name} age:{age}\r\n";
}
}
}
}
}
catch (Exception)
{
throw;
}
}

2.批量增

private void btnBatchAdd_Click(object sender, EventArgs e)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select id,name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); for (int i = ; i < ; i++)
dataTable.Rows.Add(null, "张8", ); SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataTable.GetChanges());
dataTable.AcceptChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}

3.批量改

private void btnBatchUpdate_Click(object sender, EventArgs e)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select id,name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); foreach (DataRow row in dataTable.Rows)
{
if (row["name"].ToString() == "张8")
row["name"] = "张一";
} SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataTable.GetChanges());
dataTable.AcceptChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}

4.批量删

注意:DataTable的删除只能用 dataTable.Rows[i].Delete()不能用DataRow.RemoveAt和DataRow.Remove,否则更新数据库不成功

参考:https://www.cnblogs.com/zouhao/p/9977767.html

private void btnBatchDelete_Click(object sender, EventArgs e)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select id,name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); for (int i = ; i < dataTable.Rows.Count; i++)
dataTable.Rows[i].Delete(); SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataTable.GetChanges());
dataTable.AcceptChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}

5.总结

  针对DataSet或者DataTable进行的增,删,改操作,可以合在一起批量执行。

C#ADO.NET基础二的更多相关文章

  1. ADO.NET基础03

    数据库和VS的连接,实现数据的同步,让用户的一切信息都可以在数据库中留下记录. ADO.NET基础      它是连接所有数据库的一种特殊的技术,提供对不同的数据库统一操作接口. 在VS中也可以添加数 ...

  2. 如鹏网学习笔记(六)ADO.Net基础

    ADO.Net基础 一.ADO.Net简介 1,程序要通过SQL语句自动化的操作数据库,必须要用一个类库, 类库要提供execute("insert into ...")/exec ...

  3. ADO.NET基础开发

    ADO.NET是微软新一代.NET数据库的访问架构,ADO是ActiveX Data Objects的缩写.ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供了一个面向对象的数据访问架构, ...

  4. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  5. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  6. Bootstrap <基础二十八>列表组

    列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...

  7. Bootstrap<基础二十七> 多媒体对象(Media Object)

    Bootstrap 中的多媒体对象(Media Object).这些抽象的对象样式用于创建各种类型的组件(比如:博客评论),我们可以在组件中使用图文混排,图像可以左对齐或者右对齐.媒体对象可以用更少的 ...

  8. Bootstrap <基础二十六>进度条

    Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...

  9. Bootstrap <基础二十五>警告(Alerts)

    警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...

随机推荐

  1. java里的MouseLisetener接口的使用过程==========需要用组件是来注册侦听器

    总结:通过匿名类来实现鼠标的监听或者  通过实现接口的方法都可以的 从此是实现MouseListener接口的方式 package com.a.b; import java.awt.Color; im ...

  2. juc线程池原理(一):总体介绍

    概要 线程池类图 线程池的类图如下: 1. Executor 它是"执行者"接口,它是来执行任务的.准确的说,Executor提供了execute()接口来执行已提交的 Runna ...

  3. 1024 Palindromic Number

    题意: 给出一个数N(N<=10^10),最多可操作K次(K<=100),每次操作为这个数和其反转之后的数相加,若得到的结果为回文数,则输出:若在K次迭代后仍然不是回文数,在输出第K次操作 ...

  4. python's ninth day for me

    函数 函数的定义与调用: #def  关键字  定义一个函数. # my_len  函数名, 函数名的书写规则与变量的命名一致. # def  与函数名中间一个空格. # 函数名() :  加上冒号. ...

  5. Centos安装php高版本

    安装 1.检查当前是否有安装php  rpm -qa|grep php 如果有安装PHP,那么请先删除这些安装包:  yum remove php* 2.安装php源 Centos 5 安装php源: ...

  6. CString,string和char*

    CString是MFC中的 标准C中没有string,有string.h头文件,其中是strcpy,strcmp等函数.但操作对象都是char*类型 string是C++中封装的 转化:LPCSTR  ...

  7. 固本培元之三:Convert、运算符、流程控制语句、ref/out/in三种参数类型

    一.Convert类常用的类型转换方法Convert.ToInt32() 转换为整型(int)Convert.ToChar() 转换为字符型(char)Convert.ToString() 转换为字符 ...

  8. Windows下Memcached的安装配置方法

    1.将第一个包解压放某个盘下面,比如在c:\memcached. 2.在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装. 3.再 ...

  9. opennebula 安装指定参数

    [root@opennebula opennebula-]# ./install.sh -u oneadmin -g oneadmin -k -d /home/oneadmin/ -u 指定用户-g ...

  10. 28. LAST() 函数

    LAST() 函数 LAST() 函数返回指定的字段中最后一个记录的值. 提示:可使用 ORDER BY 语句对记录进行排序. SQL LAST() 语法 SELECT LAST(column_nam ...