博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DataSet用法3操作数据
阅读量:5821 次
发布时间:2019-06-18

本文共 4014 字,大约阅读时间需要 13 分钟。

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);

 

}

 

}

 

}

转载于:https://www.cnblogs.com/janeaiai/p/4867822.html

你可能感兴趣的文章
初试装饰模式-(公司人员)
查看>>
Oracle 数据库优化的R方法(Method R)
查看>>
CentOS最小化安装系统开启网卡
查看>>
Linux的ftp服务
查看>>
互联网+升级到智能+ 开启万物智联新时代
查看>>
Nginx + Tomcat (java )服务器部署
查看>>
HP iLO2 使用详细图文教程
查看>>
Linux文本编辑器之Nano
查看>>
Linux系统集群架构线上项目配置实战(一)
查看>>
VC无闪烁刷屏技术的实现【转】
查看>>
【原】IOS中KVO模式的解析与应用
查看>>
EntityFramework Core迁移时出现数据库已存在对象问题解决方案
查看>>
urb传输的代码分析【转】
查看>>
理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称
查看>>
一道算法题的一种O(n)解法
查看>>
ABP理论学习之NHibernate集成
查看>>
反射之动态创建对象
查看>>
隐马尔可夫模型学习小记——forward算法+viterbi算法+forward-backward算法(Baum-welch算法)...
查看>>
[MFC] CList
查看>>
[Android Pro] 完美Android Cursor使用例子(Android数据库操作)
查看>>