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);
查看全文
相关阅读:
MS SQL发生死锁以及tempdb的优化资源总结
MS SQL SERVER 簡易取得資料表實體檔案大小
jquery选择器(转载)
[資源]RAID是什么意思?RAID的应用
WIN2003下安裝PHP+MYSQL資源
MS SQL 錯誤: 15457,重要性: 0,狀態: 1
[轉]如何修改bootini文件的/pae/awe/3gb参数
[資源]PHP防止SQL注入
[收藏]CSS,JS控制Table的行顏色,以及邊框
檢查php文件中是否含有bom的php文件
原文地址:https://www.cnblogs.com/simhare/p/826230.html
最新文章
[轉]将Flash CS4远程帮助文件设置成本地浏览
如何取消控制面板中“任务计划”的共享?
PHP统计在线人数
[轉]ASP+Jmail+163在线发送邮件系统
經典照片展示效果
[轉載]mysql数据库操作——DB类
[转]在sql server 中如何移动tempdb到新的位置
[轉]session_set_save_handler函数的简单用法
[轉]IIS6.0应用程序池的性能优化和设置
[轉]使用sp_change_users_login修复产生的孤立账户& 还原中的孤立用户
热门文章
[轉]百度搜索帮助中心禁止搜索引擎收录的方法
[轉]去除照片水印的方法(引用)
ASP常用發送郵件的四個FUNCTION
[轉]检测和解决 SQL Server 2000 SP 4 中的延迟和阻塞 I/O 问题
PHP图片操作类
[轉]常见排序算法稳定性和复杂度分析
[轉]Excel不能使用 80070005错误 Excel的DCOM权限问题
[資源]服务器虚拟化
[轉]创新是一项可以学习的技能
[轉載]关于PHP从checkbox取值
Copyright © 2011-2022 走看看