DataSet操作数据库
________________________________________________________________________________________________________

SqlConnection thisConnection = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;Initial Catalog=数据库名");
thisConnection.Open();//打开数据库连接
SqlDataAdapter 适配器一 = new SqlDataAdapter("select * from 顾客", thisConnection);
DataSet thisDataSet = new DataSet();//数据集
适配器一.Fill(thisDataSet, "表名");//填充数据集
thisDataSet.Tables["表名"].Rows[0]["列名"]="更新";//在内存中更新数据
thisAdapter.Update(thisDataSet, "表名");//更新数据库
thisConnection.Close();//关闭数据库连接
********************************************************************************************************

ADO.net的主要对象元素:_______________________________________________________________________________________________________
1.添加记录 (添加行)
  添加记录首先需要声明两个变量 DataTable ,DataRow
  其中DataTable需要实例化到具体的数据集中的某个table
  DataRow = DataTable.NewRow()  声明为Table的新Row
  再对DataRow进行赋值,调用DataTable.Rows.Add(DataRow)即可
            DataColumn[] keys = new DataColumn[1];
            keys[0] = thisDataSet.Tables["表名"].Columns["列名"];

________________________________________________________________________________________________________
2.删除纪录 
  如下 DataTable.Rows[5].Delete(); 
  推想:应该可以这样,首先申明一个变量 DataRow[] objRows 用来存储要删除的行
  objRows = DataTable.Select("查询条件");
  thisDataSet.Tables["表名"].PrimaryKey = keys;//设置主键,可以定义多个主键,无非就是keys[0]、key[1]、key[2]...多定义几个就可以了
  DataRow findRow = thisDataSet.Tables["表名"].Rows.Find("列数据");//查找行,这种方法只能用于查找主键,也就是在表中惟一地标识行的值或值集合

if (findRow == null)
  {
    Console.WriteLine("未找到,将添加行");
    DataRow thisRow = thisDataSet.Tables["表名"].NewRow();
    thisRow["列名"] = "新数据";
    thisDataSet.Tables["表名"].Rows.Add(thisRow);//添加行
  }
  else if (findRow != null)
{
    Console.WriteLine("找到,将删除行");
    findRow.Delete();
  }
  thisAdapter.Update(thisDataSet, "表名");//更新数据库

________________________________________________________________________________________________________
3.修改纪录 (编辑行)
  首先声明一个变量 DataRow[] objRows用来存储要编辑的行
  objRows = DataTable.Select("查询条件"); 
  如果是一行,可以这样 objRows = DataTable.Rows[3];
  再对其进行修改 如 objRows[0][FIELD1]=""  objRows[0][FIELD2]=""
            thisDataSet.Tables["表名"].Rows[0]["列名"] = "更新";//在内存中更新数据
            thisAdapter.Update(thisDataSet, "表名");//更新数据库

实际上Delete()等方法并不执行删除等操作,它仅仅标记要删除的行,在Rows集合中的每一个DateRow对象都有RowState,它跟踪记录此行是被删除、添加、修改,还是不变,实际上在此中的操作全部在内存中进行,而Update()方法才真正更新数据库。Delete()方法将行的RowState设置为Deleted,然后Update()就在数据库中将在Rows集合中标记为Deleted的所有行删除。
Visual Studio.NET在线文档会提示您在执行Delete()方法之后调用DataSet的AcceptChanges()方法;但是,这仅能删除DataSet中的行,却不影响数据库中的行,因为Update()仅影响在Rows集合中找到的行,遗漏的行将被忽略掉。如果希望在数据库中删除行,则不要在调用Update()之前调用AcceptChanges()方法。
这个问题也适用于Remove()方法;仅当希望从DataSet的Rows集合中,而不是数据库中删除行时才调用它。

________________________________________________________________________________________________________
3.表查询
            DataRow[] 权限清单Row = this.superCargoDataSet.Tables["权限清单"].Select("操作员ID=" + 操作员ID);
------------------------
            OleDbCommand thisCommand=thisConnection.CreateCommand(); //
            thisCommand.CommandText="Select * FROM 表名";
            OleDbDataReader thisReader=thisCommand.ExecuteReader();
            while(thisReader.Read())
            {
            Console.WriteLine("/t{0}/t{1}",thisReader["ID"],thisReader["TheName"]);
            }
            thisReader.Close();

/*--------------前提--------------*/
            SqlDataAdapter thisAdapter = new SqlDataAdapter("select * from 表名", thisConnection); //适配器
            SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter);//将命令构造器与适配器关联,用于自动生成SQL语句
            DataSet thisDataSet = new DataSet();//数据集
            thisAdapter.Fill(thisDataSet, "表名");//填充数据集
            Console.WriteLine("输出数据:{0}", thisDataSet.Tables["表名"].Rows[0]["列名"]);//输出数据

________________________________________________________________________________________________________
5.创建表关系
            SqlDataAdapter 适配器一 = new SqlDataAdapter("select * from 顾客", thisConnection);
            SqlDataAdapter 适配器二 = new SqlDataAdapter("select * from 订单明细", thisConnection);
            适配器一.Fill(thisDataSet, "顾客");//填充
            适配器二.Fill(thisDataSet, "订单明细");//填充
            //创建关系
            DataRelation 关系 = thisDataSet.Relations.Add("顾客和订单", thisDataSet.Tables["顾客"].Columns["顾客ID"], thisDataSet.Tables["订单明细"].Columns["顾客ID"]);//父列必须位于子列之前
            //在这以后加一句  顾客和订单.Nested=true;  将会在以后的WriteXml()方法中,将子表记录嵌套在文件中,如将在输出XML中将购货明细表输出在购货记录下

//使用关系
            foreach (DataRow custRow in thisDataSet.Tables["顾客"].Rows)
            {
        Console.WriteLine("顾客ID:"+custRow["顾客ID"]+"  名字:"+custRow["名字"]);
                foreach (DataRow orderRow in custRow.GetChildRows(顾客和订单))
                {
        Console.WriteLine("      订单:"+orderRow["订单内容"]);
                }
            }

转载于:https://www.cnblogs.com/kevinzhwl/archive/2010/07/08/3878914.html

DataSet操作数据库相关推荐

  1. c# 与 Access数据库 dataset操作

    下面以Access数据库为例说明,用C#的DataSet类访问数据库的一些操作方法. 操作涉及的主要C#类有: DataSet:对应数据库表的一个集合,实际上是数据库表在内存中的一个缓存 DataTa ...

  2. SQL DBHelp.cs 操作数据库的底层类

    /// <summary> /// 操作数据库存储过程类 /// </summary> public class ExecProc { //取出数据库连接字符串 //publi ...

  3. mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库

    1.概述 http://ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行 ...

  4. IOS操作数据库总结

    iOS学习笔记-数据库操作(使用FMDB) iOS中原生的SQLite API在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB. PlausibleDataba ...

  5. C# 连接SQL数据库以及操作数据库

    1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调 ...

  6. c#操作数据库(二)dataAdapter篇

    c#操作数据库(二)dataAdapter篇 2009-04-01 21:29 受够了ctrl+c加ctrl+v,忍无可忍之第二篇. 上篇博客介绍了用datareader操作数据库,dataReade ...

  7. oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...

    C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...

  8. sqlserver连接和操作数据库

    1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调 ...

  9. asp.net mysql helper_asp.net使用SQLHelper操作数据库

    使用控件,能够方便开发人员的开发和使用,但是很多情况下,不能使用控件来实现,所以很多情况都需要使用ADO.NET操作数据库中的数据,SQLHelper是将ADO.NET中对数据操作的类和对象进行的封装 ...

最新文章

  1. cf792b循环链表
  2. MySQL数据库-理论基础
  3. 【转】android的消息处理机制(图+源码分析)——Looper,Handler,Message
  4. TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
  5. java 怎么通过url获取远程服务器上某个文件夹下的所有文件_JMX远程代码漏洞研究...
  6. Day01_硬盘基本知识
  7. txt替换回车键符号怎么打_电脑小于等于符号≤怎么打
  8. 钢结构设计软件:IDEA StatiCa 21.1.4.X Crack-new
  9. 算法题解 - 牛客编程巅峰赛S1第4场 - 黄金钻石组
  10. splay 模板 洛谷3369
  11. Git:合并分支----git merge命令应用的三种情景
  12. php问答系统模板,tipask问答系统模板资料对照
  13. matlab cdfx,在 Simulink 数据字典中使用 ASAM CDFX 数据
  14. 控制反转和依赖注入/ scop
  15. 敏捷转型(2)——企业文化
  16. 大话深度残差网络(DRN)ResNet网络原理
  17. Java常见的线程池有哪些?
  18. 《微服务系列:SpringCloudConfig配置中心》
  19. JNI(4) JNI Functions
  20. 保护元件、设备人身安全防护(四川防电盾)

热门文章

  1. JZOJ 3899. 【NOIP2014模拟】逻辑的连通性
  2. ue编辑器拖拽上传图片_Typora + PicGo打造超好用的Markdown编辑器
  3. ICCV 2017 CREST:《CREST: Convolutional Residual Learning for Visual Tracking》论文笔记
  4. LOJ #6669 Nauuo and Binary Tree (交互题、树链剖分)
  5. BZOJ 4327 [JSOI2012]玄武密码 (AC自动机)
  6. luogu P4238 多项式求逆 (模板题、FFT)
  7. sqlserver concat 字符串位数不够左侧补0_一文搞懂Python字符串格式化
  8. unity怎么实现人脸追踪_景区人脸识别解决方案 人脸识别过闸机怎么实现
  9. ASP.NET WebAPI 集成 Swagger 启用 OAuth 2.0 配置问题
  10. OAuth2.0学习(1-1)OAuth2.0是什么?