dataset 用法(2)
1、为DataTable添加列
(1)添加列
DataTable tbl = ds.Tables.Add("User");
DataColumn col =tbl.Columns.Add("UserID",typeof(int));
col.AllowDBNull = false;
col.MaxLength = 6;
col.Unique = true;
tbl.PrimaryKey = new DataColumn[]{tbl.Columns["UserID"]};
当设置主键时,AllowDBNull自动设置为False;
(2)添加自增列
DataSet ds = new DataSet();
DataTable tbl = ds.Tables.Add("User");
DataColumn col = tbl.Columns.Add("UserID",typeof(int));
col.AutoIncrement = true;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = true;
2、修改DataTable中的数据
(1)添加数据行
DataRow row = ds.Tables["User"].NewRow();
row["UserID"] = "123456";
ds.Tables["User"].Rows.Add(row);
object[] aValues ={"123456","张三"}
da.Tables["User"].LoadDataRow(aValues,false);
(2)修改当前行
修改行的内容 Datast并不会自动修改数据库中相应的内容,而是要使用SqlDataAdapter对象的Update方法来提交修改。
//查找UserID为123456的用户,有则修改
DataRow User;
User = ds.Tables["UserID"].Rows.Find("123456");
if(User == null)
//没有查找客户
else
{
User.BeginEdit();
User["UserName"] ="王五";
User.EndEdit();
}
obejct[] User ={null,”王五”} ;//null表示不修改该列的数据
DataRow rowUser;
rowUser = ds.Tables["UserID"].Rows.Find("123456");
rowUser.ItemArray = User;
(3)处理行中的空值
A:查看是否为空
DataRow rowUser;
rowUser = ds.Tables["UserID"].Rows.Find("123456");
if(rowUser.IsNull("Address"))
Console.WriteLine("Address is Null");
else
Console.WriteLine("Address is not Null");
B:赋予空值
rowUser["Address"] = DBNull.Value;
(4)删除行
DataRow rowUser;
rowUser = ds.Tables["UserID"].Rows.Find("123456");
rowUser.Delete();
(5)清除DataRow
A:
DataRow rowUser;
rowUser = ds.Tables["UserID"].Rows.Find("123456");
rowUser.ItemArray = aUser;
da.Tables["User"].Remove(rowUser);
B:
ds.Tables["User"].RemoveAt(intIndex);
3、实例
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace sqlconnection1
{
class Program
{
private void SQLConnectionF(string source, string select)
{
//创建连接
SqlConnection con = new SqlConnection(source);
SqlDataAdapter adapt = new SqlDataAdapter(select,con);
try
{
con.Open();
Console.WriteLine("connection is successful!");
}
catch (Exception e)
{
Console.WriteLine("connection error is :{0}", e.ToString());
}
SqlCommandBuilder mybuilder = new SqlCommandBuilder(adapt);
//创建DataSet
DataSet ds = new DataSet();
//将数据添加到DataSet中
adapt.Fill(ds,"mytest");
//取出mytest表各列名
Console.WriteLine("{0,-15} {1,-10} {2,-10}",ds.Tables["mytest"].Columns[0],
ds.Tables["mytest"].Columns[1], ds.Tables["mytest"].Columns[2],
ds.Tables["mytest"].Columns[3], ds.Tables["mytest"].Columns[4]);
//输出DataSet中的所有数据
Console.WriteLine("before up data");
foreach (DataRow row in ds.Tables["mytest"].Rows)
{
Console.WriteLine("{0,-35} {1,-10} {2,-10} {3}",row[0] ,
row[1] , row[2] , row[3]);
}
//将第一行的第四列的值修改为123
DataRow rows1 = ds.Tables["mytest"].Rows[0];
rows1[3] = "123";
//删除该行
rows1.Delete();
//插入一行
DataRow newrow = ds.Tables["mytest"].NewRow();
newrow[0] = "mmm";
newrow[1] = 36;
newrow[2] = "aaa";
newrow[3] = 222;
ds.Tables["mytest"].Rows.Add(newrow);
//在DataSet中查找数据
DataColumn[] keys = new DataColumn[2];
keys[0] = ds.Tables["mytest"].Columns["name"];
keys[1] = ds.Tables["mytest"].Columns["number"];
//keys[1] = ds.Tables["mytest"].Columns ["type"];
ds.Tables["mytest"].PrimaryKey = keys;
DataRow findrow = ds.Tables["mytest"].Rows.Find("rrr");
if (findrow != null)
{
Console.WriteLine("{0}is find in tables",findrow);
//delete the row
Console.WriteLine("removing the rows ........");
findrow.Delete();
}
//用DataSet中的数据更新表
adapt.Update(ds,"mytest");
//输出DataSet中的所有数据
Console.WriteLine("after up data");
foreach (DataRow row in ds.Tables["mytest"].Rows)
{
Console.WriteLine("{0,-15} {1,-10} {2,-10} {3}", row[0],
row[1], row[2], row[3]);
}
Console.ReadLine();
con.Close();
}
static void Main(string[] args)
{
string sou = "server=duanyf\\SQLEXPRESS;" + "Initial Catalog=master;" + "UID = sa;" + "Password = dyf123";
string sel = "SELECT name,number,type,low,high From dbo.spt_values WHERE number=36";
Program sqlcon = new Program();
sqlcon.SQLConnectionF(sou, sel);
}
}
}
【转自】http://www.cnblogs.com/hulang/archive/2011/01/11/1932567.html
dataset 用法(2)的更多相关文章
- DataSet用法详细 转
DataSet用法详细 转 DataSet用法详细 一.特点介绍 1.处理脱机数据,在多层应用程序中很有用. 2.可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法. 3.处理分级 ...
- DataSet用法详细
转自:http://www.cnblogs.com/zeroone/archive/2012/06/08/2541299.html DataSet用法详细 一.特点介绍 1.处理脱机数据,在多层应用程 ...
- dataset 用法(3)
ReadXml 提供了只将数据或同时将数据和架构从 XML 文档读入 DataSet 的方式(若要同时读数据和架构,请使用包括 mode 参数的 ReadXML 重载之一,并将其值设置为 ReadSc ...
- dataset 用法(1)
DataSet是表和列结构在内存中的表示方式,DataSet支持多表.表间关系.数据约束等,和关系数据库的模型基本一致.(本质上是微型的数据库.包含一组DataTable对象和DataTable之间的 ...
- DATASET()用法
DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是 ...
- js 控制 class 类名(classList) 和 自定义属性(dataset)
classList 用法: const div = document.querySelector('div') div.classList.add('myclass') // 添加类名 div.cla ...
- tensorflow学习笔记--dataset使用,创建自己的数据集
数据读入需求 我们在训练模型参数时想要从训练数据集中一次取出一小批数据(比如50条.100条)做梯度下降,不断地分批取出数据直到损失函数基本不再减小并且在训练集上的正确率足够高,取出的n条数据还要是预 ...
- 【转】如何在TensorFlow中高效使用数据集
本文主要记录tensorflow一个比较好用的API:Dataset,feed-dict 是向 TensorFlow 传递信息最慢的方式,应该尽量避免使用.向模型提供数据的正确方式是使用输入管道,这样 ...
- dataset 和DataTable的用法
以下包含了这两种不同属性的用法: foreach (DataRow dr in dataset.Tables[0].Rows) { if (i != 0 && l ...
随机推荐
- ceph理论及部署配置实践
prefaces: ceph installation(quick)1,preflight(ins ceph-deploy repo tools)2,ceph storage cluster quic ...
- Linux学习之十五、基础正规表示法\延伸正规表示法
原文地址: http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_2.php 基础正规表示法 既然正规表示法是处理字串的一种表示方式,那么对字节排 ...
- VS2015 开发人员命令提示,如何实现记事本编程
开始,选择VS2015 开发人员命令提示,打开 找到.c文件的位置,复制位置 在VS2015 开发人员命令提示, 输入cd 位置 回车 然后输入cl 文件名 回车 这样进行编译
- oracle 物化视图导入导出报错
1.exp导出报EXP-00008: 遇到 ORACLE 错误 1455,ORA-01455: 转换列溢出整数数据类型 2.imp导入报.注: 表包括 ROWID 列, 其值可能已废弃,不是警告也不是 ...
- easyui的验证
加一个JS来重写验证,文件名为:validator.js 内容为: //扩展easyui表单的验证 $.extend($.fn.validatebox.defaults.rules, { //验证汉子 ...
- 根据自己的需要适度使用Web开发框架
软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多.Web开发框架能够帮我们大大减少工作量,但是我们应该如何正确看待Web开发框架,并且如何去使用他们呢? 对框架的依赖 ...
- svn代码版本管理
1.0开发,做dev1.0的branch此时的目录结构svn://proj/ +trunk/ (不负担开发任务) +branches/ ...
- [转]Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步
使用场景: 在团队开发中,每一个人都有可能随时更新数据库,这时候数据库中数据和架构等信息都会发生变化.如果更新不及时,就会发生数据错误或数据丢失的风险,影响团队的开发效率和 项目进度,这时候我们该怎么 ...
- mac终端下svn常用命令
svn基本的操作流程就是: 你刚刚进入一个新的公司,让你接手一个正在进行的项目,你打开终端写下了:svn co svn://192.168.1.1/pro/domain 然后就可以在当前目录里面找到一 ...
- C++多态的实现原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数. 2. 存在虚函数的类都有一个一维的虚函数表叫做虚表.类的对象有一个指向虚表开始的虚指针.虚表是和类对应的,虚表指针是和对象 ...