使用SqlDataAdapter填充DataSet

本文介绍了如何使用SqlDataAdapter填充DataSet,并实现数据的增删改查。包括SQL查询、DataSet填充、更新数据库、多查询、获取DataRow、通过DataColumn获取列名与数据类型以及使用DataView进行排序与分页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用SqlDataAdapter填充DataSet
string sql = "select * from Person.AddressType";//定义SQL查询语句
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter
DataSet ds=new DataSet();
adapter.Fill(ds);//填充一个DataSet
使用SqlDataAdapter将DataSet更改写入数据库
string sql = "select * from Person.AddressType";//定义SQL语句
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter对象
DataSet ds=new DataSet();
adapter.Fill(ds);//填充数据
ds.Tables[0].Rows[0]["ModifiedDate"]=DateTime.Now;//修改DataSet数据
//以下定义更新数据库的方法
SqlCommand updateCmd=new SqlCommand("update Person.AddressType set ModifiedDate= @mdate where AddressTypeID=@id",conn);//定义更新语句
updateCmd.Parameters.Add("@mdate",SqlDbType.DateTime,8,"ModifiedDate");//更新参数
updateCmd.Parameters.Add("@id",SqlDbType.Int,4,"AddressTypeID");//更新参数
adapter.UpdateCommand = updateCmd;//将更新语句的SqlCommand对象应用到SqlDataAdapter
adapter.Update(ds);//执行更新操作
//===============================================
获得多个DataTable对象
string sql = "select * from Person.AddressType;select * from Person.ContactType";
//一个SQL语句中有多个查询
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter对象
DataSet ds=new DataSet();
adapter.Fill(ds);//填充数据
Console.WriteLine(ds.Tables.Count); //返回DataTable的个数,结果为2
动态添加DataTable
DataSet ds = new DataSet();
string sql = "select * from Person.AddressType;";//定义SQL语句
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明一个SqlDataAdapter对象
DataTable  dt1=new DataTable();
adapter.Fill(dt1);//填充数据
dt1.TableName="AddressType";//定义DataTable的名字
ds.Tables.Add(dt1);//向DataSet中添加一个DataTable
Console.WriteLine(ds.Tables.Count);//输出:1
sql = "select * from Person.ContactType";//定义另一个SQL查询
cmd = new SqlCommand(sql, conn);
adapter = new SqlDataAdapter(cmd);
DataTable dt2 = new DataTable();
adapter.Fill(dt2);//填充数据
dt1.TableName = "ContactType";
ds.Tables.Add(dt2);//再添加一个DataTable
Console.WriteLine(ds.Tables.Count);//输出:2
Console.WriteLine(ds.Tables["ContactType"].TableName);//通过TableName检索DataTable

////////////////////////////////////////////////////////////////

获得所有的DataRow
string sql = "select * from Person.AddressType;";//定义SQL查询语句
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter对象
DataSet ds = new DataSet();//定义一个DataSet
adapter.Fill(ds);//填充数据
foreach (DataRow dr in ds.Tables[0].Rows)//循环从DataSet的第一个DataTable中读取每一行
{
    Console.WriteLine(dr["Name"]);//输出Name列的内容
}

///////////////////////////////////////////////////////

通过DataColumn获得列名和数据类型
string sql = "select * from Person.AddressType;";//定义SQL查询语句
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter对象
DataSet ds = new DataSet();//定义DataSet
adapter.Fill(ds);//填充数据
foreach (DataColumn dc in ds.Tables[0].Columns)//循环DataSet中第一个DataTable的每一列
{
    Console.WriteLine(dc.ColumnName + " " + dc.DataType);//输出列名和数据类型
}

//////////////////////////

使用DataView排序
string sql = "select * from Person.AddressType;";//定义SQL查询语句
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter对象
DataSet ds = new DataSet();//定义DataSet
adapter.Fill(ds);//填充数据
DataView dv = new DataView(ds.Tables[0]);//使用DataSet中第一个DataTable生成DataView
dv.Sort = "Name";//根据Name列进行排序
for (int i = 0; i < dv.Count; i++)//循环读取DataView中的每一行
{
    Console.WriteLine(dv[i].Row["AddressTypeID"]+" "+dv[i].Row["Name"]);//输出一行中的内容
}
使用DataView分页
string sql = "select * from Person.AddressType;";//定义SQL查询语句
SqlCommand cmd = new SqlCommand(sql, conn);//申明SqlCommand对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//申明SqlDataAdapter对象
DataSet ds = new DataSet();//定义一个DataSet
adapter.Fill(ds);//填充数据
DataView dv = new DataView(ds.Tables[0]); //使用DataSet中第一个DataTable生成DataView
dv.RowFilter = "AddressTypeID<5 and AddressTypeID>2";//设置过滤条件
for (int i = 0; i < dv.Count; i++)//循环输出DataView中的每一行
{
    Console.WriteLine(dv[i].Row["AddressTypeID"]+" "+dv[i].Row["Name"]);//输出一行中的内容
}

转载于:https://www.cnblogs.com/canlay/archive/2011/08/31/2161440.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值