zoukankan
html css js c++ java
ado.netDataSet\DataReader
/**/
/*
许多支持以DataSet作为数据源的数据邦定控件(DataGrid)等,
* 也同样支持到DataReader的邦定:
* DataSet ds = new DataSet();
* //TODO:Initialize DataSet
* MyDataGrid.DataSource = ds;
* MyDataGrid.DataBind();
* 同样的代码也可以用DataReader实现:
* SqlDataReader sdr = comm.ExecuteReader();
* MyDataGrid.DataSource = sdr;
* MyDataGrid.DataBind();
*
* 邦定到DataReader更高效,
* 是因为DataReader不会把结果集留在内存中让GC来收集
*
*/
/**/
/*
虽然在内存中不依赖外部数据源新建DataSet对象是完全可以的,但实际上DataSet总是通过
* 数据库查询或者XML文档来初始化的。
* DataSet不直接和数据库交互,而是由DataAdapter来完成这项工作。
* DataAdapter的目的是执行数据库查询并创建包含查询结果的DataTable。
* 它也能够把对DataTable的更改写回数据库。DataAdapter是位于DataSet和物理数据源之间的一个抽象层。
* SqlDataAdapter和OleDbDataAdapter都继承自同一个类:System.Data.Common.DbDataAdapter。
* DataAdapter最重要的方法是Fill和Update,
* 前者查询数据库并用结果初始化DataSet(实际上是DataTable),后者把更改写回数据库。
*
*
*
*
*
*
*/
SqlDataAdapter adapter
=
new
SqlDataAdapter(
"
select * from titles
"
,
"
server=.;database=pubs;uid=sa;pwd=;
"
);
DataSet ds
=
new
DataSet();
adapter.Fill(ds,
"
Titles
"
);
//
TODO: Fill用传递给SqlDataAdapter的构造函数的第二个参数(连接字符串)打开一个指向Pubs数据库连接
//
TODO:1.在DataSet中创建一个名为Titles的表。
//
2.用数据库中的Titles表的架构初始化DataTable,
//
--〉Mapping,“Titles”既是数据库表,在DataSet中又有一个DataTable“Titles”
//
3.检索由查询产生的所有记录,并把它们写入到DataTable中
//
4.关闭指向数据库的连接
/**/
/*
在内部DataAdapter用一个DataReader获取查询结果,
* 但这只是一个实现细节。
* 真正重要的是:只需要一个简单的调用,就可以用数据库的数据填充DataSet。
* ---〉Adapter.Fill(ds,"Titles");
* 而且由于有SqlDataAdaper("","")的第一个参数提供了构成查询的命令,
* 所以可以让查询很复杂,从而也可以控制哪些数据可以进入DataSet
*
* 而且可以对同一个DataSet多次调用Fill(但是使用不同的表名)
* -----〉填充有多个DataTable表的DataSet
*
* 而且如果已经完成了操作,但是想重用DataSet,可以调用ds.Clear(),
* 该方法--〉remove all rows in all tables ,来清理旧的DataTable。
*
*/
string
strSql
=
@"
select * from titles
"
;
string
strConn
=
@"
provider=sqloledb;server=.;database=pubs;uid=sa;pwd=;
"
;
OleDbDataAdapter oleAdapter
=
new
OleDbDataAdapter(strSql, strConn);
DataSet oleds
=
new
DataSet();
oleAdapter.Fill(ds);
/**/
/*
一旦DataSet被初始化,使用哪个提供程序(SqlDataAdapter or OleDbDataAdapte)
* 进行的初始化就不重要了,因为DataSet是与提供程序无关的。
*/
/**/
/*
DataSet首先是一个DataTable的集合,DataTable一般是由DataAdapter创建的。
*要检查DataAdapter返回的数据,需要浏览DataAdapter创建的DataTable。
* 如果要编辑数据,操作的焦点也是DataTable。
*/
/**/
/*
下面的代码迭代通过遍历名为ds的DataSet的Tables集合,
* 输出它遇到的所有的所有表的名称:
*/
foreach
(DataTable table
in
ds.Tables)
{
Response.Write(table.TableName);
}
/**/
/*
* DataSet中的单个表可以通过名称或以0为基数的索引引用。
* 下面检索DataSet中的第一个DataTable。
* 把每一行的第一列的值输出来。
*/
DataTable table
=
ds.Tables[
0
];
foreach
(DataRow row
in
table.Rows)
{
Response.Write(row[
0
]);
}
//
using System.Data.Commn;
DataAdapter da
=
new
DataAdapter();
DataAdapter da1
=
new
DataAdapter();
/**/
/*
列也可以通过名称或数据值来引用。
* 在前一个例子中,如果在DataTable中的第一列的名称为Account_ID
* 代码也可这么写:
*/
DataTable table
=
ds.Tables[
0
];
foreach
(DataRow row
in
table.Rows)
{
Response.Write(row[
"
Account_ID
"
]);
}
/**/
/*
* ----Important:把DataTable显示在Web窗体中的简捷方法是把它邦定到一个DataGrid控件。
* 枚举一个DataTable的列:
*/
DataTable table
=
ds.Tables[
0
];
foreach
(DataColumn col
in
table.Columns)
//
table.Columns是一个DataColumnCollection
{
//
Response.Write不一定有这个重载形式,但意思是这样的。
Response.Write(
"
name={0},Type={1}
"
, col.ColumnName, col.DataType);
}
/**/
/*
*1. 在数据库中插入记录的方法之一是在包装了Insert命令的Command对象上调用ExecuteNonQuery。
*2. 也可以使用DataSet向数据库中插入记录,
* 通常的做法是用DataAdapter.Fill执行一个查询操作 ,
* 然后向查询得到的DataTable中添加记录,并把更改写回数据库。
* 下面是如何向DataTable中添加记录
*
*/
SqlDataAdapter adapter
=
new
SqlDataAdapter(strSql,strConn);
DataSet ds
=
new
DataSet();
adapter.Fill(ds,
"
Titles
"
);
//
创建一个新的DataRow,
/**/
///
/之所以不用new 而是调用DataTable的NewRow方法来创建DataRow
//
是为了使DataTable能够用与它自己相匹配的架构来初始化DataRow
DataTable table
=
ds.Tables[
"
Titles
"
];
DataRow row
=
table.NewRow();
//
初始化这个DataRow,为DataRow的每列赋值。
//
列可以用从数据库中检索到的字段名设定地址,空列不一定要被初始化
//
Pubs数据库中的Titles表包含10列,这个例子只初始化了其中6列;
//
其他列设为空。
//
另外,DataRow乐于把字符串值转换为与列相关联的实际的数据类型。
//
所以,可以自己使用强类型来编码,这样会更高效一点。---TypedDataSet
//
row["price"]=59.99m;
//
row["ytd_sales"]=100000;
//
row["pubdate"]=new DateTime(2002,5,1);
row[
"
Title_id
"
]
=
"
JP1001
"
;
row[
"
title
"
]
=
"
programming Microsoft .NET
"
;
row[
"
price
"
]
=
"
59.99
"
;
row[
"
ytd_sales
"
]
=
"
100000
"
;
row[
"
type
"
]
=
"
business
"
;
row[
"
pubdate
"
]
=
"
May 2002
"
;
//
把DataRow添加到DataTable中
table.Rows.Add(row);
查看全文
相关阅读:
[JavaScript]继续学习DOM事件模型
[面试]作答整理一些面试题
[JavaScript]使用jQuery实现无缝轮播
[JavaScript]使用CSS + jQuery 实现自动轮播图
[JavaScript]从DOM到jQuery(2)
[JavaScript]从DOM到jQuery(1)
[JavaScript]JavaScript中的函数(2)
[JavaScript]JavaScript中的函数(1)
[JavaScript]JavaScript中的Array
React练习 7 :点击div,显示innerHTML
原文地址:https://www.cnblogs.com/simhare/p/826230.html
最新文章
数据库 mysql 和 pycharm交互
迭代器 生成器 装饰器 匿名函数
批量爬取贴吧图片 糗事百科 煎蛋网
正则表达式
python 高级
python 初级
简单反爬虫代码
tlplayer,wzplayer支持wince,winphone,windows8 for arm
lib 合并
tlplayer for ios V1.1.2加密测试版本(修复1.1.1版本 for ios7播放闪退问题)
热门文章
tlplayer for ios V1.1.1加密测试版本
tlplayer,wzplayer所有平台通用加密测试视频
wzplayer V1.6正式版(无限制)不支持加密版本 2014-07-08
Wzplayer C++ 版本,WzplayerPro
mingw32 下编译 zlib
Windows7 64下MinGW64/MSYS环境搭建
MPlayer
C++面向对象
homework3
[JavaScript]继续完善无缝轮播
Copyright © 2011-2022 走看看