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操作数据库相关推荐
- c# 与 Access数据库 dataset操作
下面以Access数据库为例说明,用C#的DataSet类访问数据库的一些操作方法. 操作涉及的主要C#类有: DataSet:对应数据库表的一个集合,实际上是数据库表在内存中的一个缓存 DataTa ...
- SQL DBHelp.cs 操作数据库的底层类
/// <summary> /// 操作数据库存储过程类 /// </summary> public class ExecProc { //取出数据库连接字符串 //publi ...
- mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库
1.概述 http://ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行 ...
- IOS操作数据库总结
iOS学习笔记-数据库操作(使用FMDB) iOS中原生的SQLite API在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB. PlausibleDataba ...
- C# 连接SQL数据库以及操作数据库
1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调 ...
- c#操作数据库(二)dataAdapter篇
c#操作数据库(二)dataAdapter篇 2009-04-01 21:29 受够了ctrl+c加ctrl+v,忍无可忍之第二篇. 上篇博客介绍了用datareader操作数据库,dataReade ...
- oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...
C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...
- sqlserver连接和操作数据库
1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调 ...
- asp.net mysql helper_asp.net使用SQLHelper操作数据库
使用控件,能够方便开发人员的开发和使用,但是很多情况下,不能使用控件来实现,所以很多情况都需要使用ADO.NET操作数据库中的数据,SQLHelper是将ADO.NET中对数据操作的类和对象进行的封装 ...
最新文章
- cf792b循环链表
- MySQL数据库-理论基础
- 【转】android的消息处理机制(图+源码分析)——Looper,Handler,Message
- TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
- java 怎么通过url获取远程服务器上某个文件夹下的所有文件_JMX远程代码漏洞研究...
- Day01_硬盘基本知识
- txt替换回车键符号怎么打_电脑小于等于符号≤怎么打
- 钢结构设计软件:IDEA StatiCa 21.1.4.X Crack-new
- 算法题解 - 牛客编程巅峰赛S1第4场 - 黄金钻石组
- splay 模板 洛谷3369
- Git:合并分支----git merge命令应用的三种情景
- php问答系统模板,tipask问答系统模板资料对照
- matlab cdfx,在 Simulink 数据字典中使用 ASAM CDFX 数据
- 控制反转和依赖注入/ scop
- 敏捷转型(2)——企业文化
- 大话深度残差网络(DRN)ResNet网络原理
- Java常见的线程池有哪些?
- 《微服务系列:SpringCloudConfig配置中心》
- JNI(4) JNI Functions
- 保护元件、设备人身安全防护(四川防电盾)
热门文章
- JZOJ 3899. 【NOIP2014模拟】逻辑的连通性
- ue编辑器拖拽上传图片_Typora + PicGo打造超好用的Markdown编辑器
- ICCV 2017 CREST:《CREST: Convolutional Residual Learning for Visual Tracking》论文笔记
- LOJ #6669 Nauuo and Binary Tree (交互题、树链剖分)
- BZOJ 4327 [JSOI2012]玄武密码 (AC自动机)
- luogu P4238 多项式求逆 (模板题、FFT)
- sqlserver concat 字符串位数不够左侧补0_一文搞懂Python字符串格式化
- unity怎么实现人脸追踪_景区人脸识别解决方案 人脸识别过闸机怎么实现
- ASP.NET WebAPI 集成 Swagger 启用 OAuth 2.0 配置问题
- OAuth2.0学习(1-1)OAuth2.0是什么?