浅析基于.NET的DataAdapter+DataSet数据库访问方法
基于ASP.NET的数据库访问技术
基于的数据库访问技术是一种为了建立动态Web网站而设计的一套技术。
在中有一个重要的功能就是数据库访问。
数据库访问是的基础之一。
提供了几种访问数据库的方式,其中最常用的是。
架构的核心对象是DataSet和DataReader。
DataSet提供了在内存中存储关系数据的能力,而DataReader则是用于读取单向只进流的轻量级对象。
使用访问数据库的步骤如下:第一步:导入命名空间在页面中,我们需要导入数据库访问所需的命名空间。
如:using System.Data.SqlClient;using System.Data.OleDb;这两个命名空间用于访问SQL Server和Access数据库。
第二步:建立连接访问数据库需要建立连接,中主要使用SqlConnection建立连接。
SqlConnection对象表示一个打开的连接到SQL Server数据库。
通常,我们需要提供服务器名称、数据库名称、登录信息等来建立连接。
SqlConnection conn = newSqlConnection("Server=(local);Database=myDb;Uid=sa;Pwd=;”);第三步:执行查询当我们建立了连接后,就可以执行查询了。
查询可以用SqlCommand对象来表示,SqlCommand是一个对数据库执行SQL语句和存储过程的类。
SqlCommand提供了多种执行SQL 语句的方法,包括ExecuteNonQuery、ExecuteScalar、ExecuteReader等。
SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", conn);SqlDataReader dr = cmd.ExecuteReader();第四步:绑定结果将查询结果绑定到控件上属于中常用的操作。
GridView、Repeater、DataList、DropDownList、ListBox等控件都支持绑定数据源。
DataAdapter使用总结
对于刚刚学习数据访问技术的来说,DataAdapter也许往往会令他们感到迷惑,特别是习惯于利用托拽DataAdapter控件进行开发的朋友,通过这一数据访问控件,我们甚至不用书写一行代码,就能完成各种需要的数据访问和操作,然而在享受快捷便利的同时,心中却总挂着一丝意犹未尽的感觉。
DataAdapter控件在背后为我们做了怎样的工作?弄清楚这一点,对于喜欢探根究底的朋友,不仅乐哉悠哉,也有利于我们更它的理解的数据访问机制;同时对于.NET为我们生成的有关数据访问的一大堆莫名其妙的代码,其中很多我们可能是用不到的,因此实在是感觉不爽,尽管在Visual2005下.NET 已经利用局部类的机制将这些代码很好的隐藏了起来。
在本篇文章中,我将自己手动写代码完成利用DataAdapter进行数据访问操作,以便能让初学DataAdapter的朋友明白它背后运行的一些情况。
在此,我以SqlServer2005Express 数据库作为数据源服务器,因此需要用到的是SqlDataAdapter数据访问对象,对于其它的OleDbDataAdapter等对象与此是类似的,也希望这篇文章对于初学者能起到抛砖引玉的微薄作用吧。
首先在SqlServer2005Express里建立数据库作为数据源,关于此过程的实现可以通过数据定义语句或直接利用可视化界面来完成。
我们将通过dataGridView控件来显示数据,详细的代码如下所示:public partial class Form3 : Form{private SqlConnection myCon;private SqlDataAdapter myAda;private SqlCommand myCmd;private SqlCommandBuilder myCbd;private DataSet mySet;public Form3(){InitializeComponent();myCon = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=Shop;Persist Security Info=True;User ID=sa;Password= ");myAda = new SqlDataAdapter();myCmd = new SqlCommand("select * from Userinfo",myCon);myAda.SelectCommand = myCmd;myCbd = new SqlCommandBuilder(myAda);mySet = new DataSet();myAda.TableMappings.Add("UserInfo", "UserInfo");myAda.TableMappings[0].ColumnMappings.Add("UserID", "用户");myAda.TableMappings[0].ColumnMappings.Add("UserName", "用户姓名");myAda.TableMappings[0].ColumnMappings.Add("UserAge", "年龄");myAda.TableMappings[0].ColumnMappings.Add("UserSex", "性别");myAda.TableMappings[0].ColumnMappings.Add("UserAddress", "地址"); }private void Form3_Load(object sender, EventArgs e){Try{myAda.Fill(mySet, "UserInfo");}catch (SqlException ex){MessageBox.Show(ex.ToString());}finally{myCon.Close();}dataGridView1.DataSource = mySet.Tables["UserInfo"];}private void bt_Update_Click(object sender, EventArgs e){try{//将更改的数据更新到数据表里myAda.Update(mySet.Tables[0].GetChanges());MessageBox.Show("数据更新成功!");//DataTable接受更改,以便为下一次更改作准备mySet.Tables[0].AcceptChanges();}catch (SqlException ex){ex.ToString(); }}private void bt_Delete_Click(object sender, EventArgs e){//从DataTable中删除当前选中的行mySet.Tables[0].Rows[dataGridView1.CurrentRow.Index].Delete();if (MessageBox.Show("确定要删除当前行数据?", "", MessageBoxButtons.OKCancel) == DialogResult.OK){try{//将更改的数据更新到数据表里myAda.Update(mySet.Tables[0].GetChanges());MessageBox.Show("数据删除成功!");//DataTable接受更改,以便为下一次更改作准备mySet.Tables[0].AcceptChanges();}catch (SqlException ex){MessageBox.Show(ex.ToString());}}else{//取消对DataTable的更改mySet.Tables[0].RejectChanges();}}}Ok了,上面的代码已经能够完成对数据库更新和删除的操作,是不是也很简洁,自己写的才叫亲切,才叫熟悉。
idatareader dataadpter
idatareader dataadpterIDataReader和DataAdapter是.NET Framework中用于处理和访问数据的两个重要组件。
它们提供了在不同数据源之间移动数据的功能并与应用程序进行交互。
本文将逐步解释IDataReader和DataAdapter的概念、功能和使用方法。
一、IDataReaderIDataReader是一个接口,定义了从数据源读取数据的基本方法和属性。
它提供了一个只向前的、只读的数据流,用于将数据以一行一行的方式从数据源中检索出来。
IDataReader主要用于处理大型数据集,并提供了高效的读取和处理方式。
1.1 IDataRead接口方法和属性IDataReader接口中定义了一系列方法和属性,用于从数据源中读取和访问数据。
- Read():将IDataReader的位置推进到下一条记录,并返回一个布尔值,指示是否有更多的数据可用。
- GetValue():获取IDataReader当前记录中指定列的值,并将其转换为适当的.NET类型。
- GetName():获取指定列的名称。
- GetDataTypeName():获取指定列的数据类型名称。
- GetFieldType():获取指定列的数据类型。
- GetBoolean():获取指定列的布尔值。
- GetByte():获取指定列的字节值。
- GetInt32():获取指定列的整数值。
- GetString():获取指定列的字符串值。
- HasRows:获取一个值,指示IDataReader是否包含一行或多行数据。
1.2 使用IDataReader在使用IDataReader之前,需要先创建一个与数据源相关联的连接对象,并执行数据库查询获取IDataReader对象。
接下来,可以使用IDataReader对象从结果中读取和处理数据。
下面是一个示例代码,演示如何使用IDataReader从数据库中读取和显示数据:csharpusing (SqlConnection connection = new SqlConnection(connectionString)){SqlCommand command = new SqlCommand(query, connection);connection.Open();SqlDataReader reader = command.ExecuteReader();if (reader.HasRows){while (reader.Read()){Console.WriteLine("ID: {0}, Name: {1}, Age: {2}", reader.GetInt32(0), reader.GetString(1), reader.GetInt32(2));}}else{Console.WriteLine("No data found.");}reader.Close();}以上代码使用了SqlConnection和SqlCommand对象来创建一个数据库连接,并执行一个查询语句。
基于ASP.NET的数据库访问技术
基于的数据库访问技术摘要:随着网络技术和数据库技术的日益成熟,web应用程序开发技术应运而生,的以构建动态web应用程序为核心的数据处理技术,因简单易用的优点迅速风靡全球。
关键词: 数据库 中图分类号:tp311.13 文献标识码:a 文章编号:1007-9416(2013)01-0135-01迅速发展的互联网,通过各种各样的应用程序将全世界微缩到一个小小的屏幕上。
是microsoft公司推出的用于设计和构架新一代internet网站的编程环境,它以数据处理为中心的数据库开发技术得到特别的重视。
1 简介微软推出的全新的,是一个革命性的新平台,是一个用于web开发的全新框架。
它包括一个用于加载和运行应用程序的软件基础结构:.net framework和;一个新的开发环境:visual ,以及支持该结构的编程语言。
2 的特点提供了一个统一的web开发应用程序平台,提供为建立和部署企业级web应用程序所必需的服务。
它有如下特点:2.1 web窗体技术提供了大量基于表单的可编程的web页面和控件,使得程序员在web应用中采用向往已久的windows开发模式成为可能。
2.2 web服务技术启用的xml web服务技术可以实现应用系统跨平台、跨编程语言。
2.3 代码分离技术将页面设计与代码进行分离,分别放在两个文件中,既提高了运行效率,也提高了程序部署的安全性。
2.4 数据绑定技术可运用编程方式指定控件的数据源,既提高了开发效率,又有助于将数据结构的细节对应用程序的表示层隐藏起来。
3 基于的断开式数据库访问3.1 简介作为微软最新的数据访问技术,已经在企业开发中得到了广泛应用。
包含了两个核心组件,分别是.net framework 数据提供程序和数据集dataset。
它的操作原理如下:首先,数据提供程序用于连接到数据库、执行命令和检索结果;然后,dataset 从数据源中检索到的数据以缓存形式存储在内存中。
使用DataSet访问数据库
第10章使用DataSet访问数据库DataSet(数据集)相当于内存中暂时存放的数据库,它不仅可以包括多张数据表,还可以包括数据表之间的关系和约束,这是DataSet与上一章中介绍的DataTable的关键不同。
允许将不同类型的数据表复制到同一个数据集中,甚至还允许数据表与XML文档组合到一起协同操作。
DataSet提供了对数据库的断开操作模式(也称为离线操作模式),当DataSet从数据源获取数据后就断开了与数据源之间的连接。
允许在DataSet中定义约束和表关系,添加、删除或编辑记录,还可以对数据集中的数据进行查询、统计等。
当完成了各项数据操作后,还可以将DataSet中的数据送回到数据源以更新数据库记录。
10.1 DataSet概述DataSet(数据集)对象是的核心构件之一,它是数据的内存主流表示形式,提供了独立于数据源的一致关系编程模型。
DataSet表示整个数据集,其中包括有表、约束和表与表之间的关系。
由于DataSet独立于数据源,故其中可以包含应用程序的本地数据,也可以包含来自多个数据源的数据。
10.1.1 DataSet与DataAdapterDataSet是实现断开式连接的核心,它通过DataAdapter从数据源获得数据后就断开了与数据源之间的连接(这一点与前面介绍过的DataReader对象完全不同),此后应用程序所有对数据源的操作(定义约束和关系、添加、删除、修改、查询、排序、统计等等)均转向到DataSet,当所有这些操作完成后可以通过DataAdapter提供的数据源更新方法将修改后的数据写入数据库。
图10-1表示了DataSet、DataAdapter和数据源之间的关系,从图中可以看到DataSet对象并没有直接连接数据源,它与数据源之间的连接是通过DataAdapter对象来完成的。
图10-1 DataSet、DataAdapter和数据源之间的关系需要说明的是对于不同的数据源DataAdapter对象也有不同的形式,如用于连接Access数据库的OleDbDataAdapter,用于连接SQL Server数据库的SQL DataAdapter、用于连接ODBC 数据源的OdbcDataAdapter、用于连接Oracle数据库的OracleDataAdapter等。
第8章 使用DataSet访问数据库
8.1 DataSet的基本构成
可以把数据集理解为内存中的一个临时数据库,它把应用 程序需要的数据临时保存在内存中。由于这些数据都缓存 在本地计算机中,因此不需要与数据库服务器一直保持连 接。当应用程序需要数据时,直接从内存中的数据集中读 取数据;也可以修改数据集中的数据,然后把数据集中修 改后的数据写回数据库。 8.1.1 DataSet、DataAdapter和数据源之间的关系 数据集不直接与数据库联系,数据集与数据库之间的联系 是通过.NET数据提供程序来实现的,因此数据集是独立于 任何数据库的。
2.DataAdapter对象的常用方法 DataAdapter对象的常用方法见表8-5。
(1)填充数据集 使用DataAdapter对象填充数据集的步骤如下。 ① 创建数据库连接对象(Connection对象)。 ② 定义从数据库查询数据用的Select SQL语句。 ③ 利用①、②步中创建的Connection对象和Select SQL语句 ,创建DataAdapter对象: SqlDataAdapter da = new SqlDataAdapter("Select SQL语句", Connection对象); ④ 调用DataAdapter对象的Fill()方法填充数据集,语法格式 如下: 数据适配器对象名.Fill(数据集对象名, "数据表名称字符串 "); 如果数据集中没有“数据表名称字符串”这个数据表,则 调用Fill()方法后会创建该数据表。如果数据集中已经有这 个数据表,则把现在查出的数据添加到该数据表中。
④ 设置DataAdapter对象的SelectCommand属性,使用conn 指定连接,执行SelectSql指定的SQL语句,从数据库中取出 需要的数据。代码如下: da.SelectCommand = new SqlCommand(SelectSql, conn); ⑤ 创建一个空DataSet对象: DataSet ds = new DataSet(); ⑥ 使用DataAdapter对象的Fill方法填充DataSet: da.Fill(ds); //将DataAdapter执行SQL语句返回的结果填充 到DataSet对象 ⑦ 为GridView控件设置数据源,并绑定,以便在GridView 控件中显示DataSet中的数据。
基于ASP.NET的数据库访问技术研究与实现
D t e 和 D t d pe 对 象 。 每 个 对 象 的 主 要 功 能 如 下 : a St a a A at a r ① C n e t n对 象 主要 提供 与数 据 库 的 连 接 功 能 ; C mm n o n ci o ② o a d对 象 用 于 返 回数 据 、 改 数 据 、 行 存 储 过 程 以及 发 送 或 检 索 参 修 运 数 信 息 的数 据 库 命 令 ;( aa e d r 象 通 过 C m n d对 象  ̄D tR a e 对 o ma 提 供 从 数 据 库 检 索 信 息 的 功 能 , a R a e 对 象是 以 一 种 只 读 D t edr a 的、 向前 的 、 速 的 方 式 访 问 数 据 库 ; D tS t A O N T的 快 ④ a e 是 D .E a 核 心 对 象 , 是 一 个 数 据 库 容 器 , 以把 它 当 作 是 存 在 于 内 存 它 可 的 数 据 库 。 a S t 数 据 的 内存 驻 留 表示 形 式 , 可 以用 于 多 D t e是 a 它 个 不 同 形 式 的 数 据 源 。 aa d pe 对 象 提 供 连 接 D tS t 象 D t at A r a e对 a
【 _ 】 s . T 数 据 库访 问技 术 关.} A PNE 词
A DO. T NE
O
引 言
随 着 信 息社 会 的到 来 , 来 越 多 的管 理 从 日常 的手 工 转 向 越
11 高 效 性 .. 4
页 面 只需 要 一 次 编 译 后 不 需 要 重 新 编译 , 到 直
DataReader对象读取数据与DataAdapter、DataSet对象操作数据
1、 DataReader使用案例:
namespace DataReader Test {
public partial class Forml: Form {
public Forml () {
InitializeComponent(); }
private void Form1 Load (object sender, EventArgs e) {
//省略获得连接对象的代码 ... //创建 DataAdapter string sql="select*from student"; SqlDataAdapter sda=new SqlDataAdapter(sql,conn);
//创建并填充 Dataset DataSet ds=new Dataset(); sda.fill(ds, "student");
7、综合使用 DataRow和 DataColumn访问 DataTable内的数据
foreach(DataRow dr in dt.Rows){ foreach(DataColumn dc in dt.Columns){ //用数组访问数据 Dr[dc]=100; }
}
8、使用 DataSet和 DataAdapter对象访问数据库
以下代码将更新dataset里的数据在dataset里的名为student的datatable里添加一个用于描述行记录的datarow对象datarowdrdstablesstudent
DataReader对象读取数据与 DataAdapter、 DataSet对象操作数 据
目录 1、DataReader使用案例: 2、给DataAdapter对象的selectCommand属性赋值 3、综合地使用DataTable、DataColumn和DataRow对象进行数据库操作 4、使用Table名来访问DataTable 5、使用Rows属性访问数据记录 6、使用Rows属性,访问指定行的指定字段 7、综合使用DataRow和DataColumn访问DataTable内的数据 8、使用DataSet和DataAdapter对象访问数据库 9、利用DataAdapter对象填充DataSet对象 10、使用DataAdapter对象,将DataSet中的数据更新到数据库
跟我学VS#语言编程技术——应用数据适配器DataAdapter组件实现对数据库表中的数据进行访问操作的应用示例
1.1跟我学VS#语言编程技术——应用数据适配器DataAdapter组件实现对数据库表中的数据进行访问操作的应用示例1、DataAdapter对象(数据适配器)在.NET中提供了一个非常方便的对象----DataAdapter对象。
在DataAdapter对象中自动连接数据库(Conniction),并且内置了Command和自动生成SQL语句,这就使DataAdapter 对象的功能异常强大,在DataAdapter对象中使用DataReader对象,更重要的,它建立了和DataSet对象的连接,所以,在.NET数据库应用中,应该尽可能的使用DataAdapter对象。
(1)加入一个DataAdapter对象,系统会自动给出一个连接向导,根据向导建立连接。
选择现有的连接(2)在查询生成器中生成SQlS语句(3)如果需要对数据进行修改,则应该点击“高级选项”按钮完成以后,我们可以看到,系统自动加入了一个OleDbConnection1。
(4)也可以重新配置DataAdapter。
(5)再加入一个按钮,并在其事件中加入如下的代码:private void button4_Click(object sender, System.EventArgs e){ string rowDataString;int totalFieldCounter;System.Data.SqlClient.SqlDataReader sqlDataReader;listBox1.Items.Clear();checkedListBox1.Items.Clear();//打开sqlDataAdapter1.SelectCommand.Connection,准备建立DataReader对象sqlDataAdapter1.SelectCommand.Connection.Open();//利用SelectCommand.ExecuteReader来创建DataReader对象//注意这个枚举类型的选项,关闭Connection的连接。
DataReader、DataSet、DataAdapter和DataView使用介绍
DataReader、DataSet、DataAdapter和DataView使⽤介绍提供两个对象⽤于检索关系型数据并把它存储在内存中,分别是DataSet和DataReader。
DataSet提供内存中关系数据的表现--包括表和次序、约束等表间的关系的完整数据集合。
DataReader提供快速、只向前、只读的来⾃数据库的数据流。
使⽤DataSet时,⼀般使⽤DataAdapter(也可能是CommandBuilder)与数据源交互,⽤DataView对DataSet中的数据进⾏排序和过滤。
DataSet可以被继承来建⽴强化类型的DataSet,⽤于暴露表、⾏、列作为强化类型对象属性。
下⾯的内容包含什么时候使⽤DataSet或DataReader,以及怎样优化访问它们所包含的数据,也包括怎样优化DataAdapter和DataView的使⽤(也包括CommandBuilder)。
DataSet与DataReader的对⽐在设计应⽤程序时,决定使⽤DataSet还是DataReader需要考虑应⽤程序需要的功能。
:l 操作结果中的多个分离的表。
2 操作来⾃多个源(例如来⾃多个数据库、XML⽂件和电⼦表格的混合数据)的数据。
3 在层之间交换数据或使⽤XML Web服务。
与DataReader 不同,DataSet能被传递到远程客户端。
4 通过缓冲重复使⽤相同的⾏集合以提⾼性能(例如排序、搜索或过滤数据)。
5 每⾏执⾏⼤量的处理。
在使⽤DataReader返回的⾏上进⾏扩展处理将使连接存在的时间⽐必要的更长,从⽽降低效率。
6 使⽤XML操作(例如XSLT转换和Xpath查询)维护数据。
:l 不需要缓冲数据。
2 正在处理的结果集太⼤⽽不能全部放⼊内存中。
3 需要迅速⼀次性访问数据,采⽤只向前的只读的⽅式。
注意:当填充DataSet的时候,DataAdapter使⽤DataReader。
因此使⽤DataAdapter代替DataSet获得的性能是节约了DataSet消耗的内存和组装DataSet所需要的周期。
数据集使用的技巧
l 命令构造器的使用应该限制在设计时或者ad-hoc情况下。需要的生成数据适配器命令属性的过程妨碍了性能。如果你预先知道INSERT/UPDATE/DELETE语句的内容,应该显式地设置它们。好的设计技巧是为INSERT/UPDATE/DELETE命令建立存储过程并明确地配置数据适配器命令属性来使用它们。
'Visual Basic
Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Customers;
SELECT * FROM Orders;", myConnection)
Dim ds As DataSet = New DataSet()
使用大纲(taAdapter.Fill方法使用数据集的已存在的大纲并把它与Select命令(SelectCommand)返回的数据进行组合。如果数据集中没有与被填充的表匹配的表的名字,Fill方法将建立一张表。默认情况下,Fill只定义列和列的类型。
在强类型DataSet中处理空值
使用强类型DataSet时,你能给DataSet 的XML大纲定义语言(XSD)作注解以确保强类型DataSet正确的处理空(Null)的引用。空值(nullValue)注释使你能用String.Empty这个特定值代替DBNull、保持了空引用、或者产生一个异常。选择其中的哪个依赖于应用程序的内容,默认情况下遇到空引用将产生一个异常。
l 命令构造器使用数据适配器的SelectCommand属性来决定其它命令属性的值。如果数据适配器的SelectCommand自身改变了,一定要调用RefreshSchema来更新命令属性。
l 如果命令属性是空的(默认情况下命令属性是空的),命令构造器只为数据适配器命令属性生成一个命令。如果你明确地设置一个命令属性,命令构造器不会覆盖它。如果你希望命令构造器为一个已经设置了的命令属性生成一个命令,要把命令属性设置为空。
使用DataSet和DataAdapter插入关联数据
使用DataSet和DataAdapter插入关联数据自从介绍了,我们就开始在数据驱动的应用程序开发里使用一个不同的概念,脱机环境。
大多数人已经知道了这个改变,但是这个新的开发模型带来一些我们需要解决的问题,以使我们的程序运行在完全的脱机环境中。
本文来自于Alpha Atom本文译自Codeproject 上Mauricio Ritter的Inserting relational data using DataSet and DataAdapter,文章版权归原作者所有。
翻译:小新0574介绍自从介绍了,我们就开始在数据驱动的应用程序开发里使用一个不同的概念,脱机环境。
大多数人已经知道了这个改变,但是这个新的开发模型带来一些我们需要解决的问题,以使我们的程序运行在完全的脱机环境中。
在我使用这个方法开发程序的时候我发现使用DataSet和DataAdapter对象更新关系数据的方法有问题。
如果你仅仅更新一个DataTable,那么为DataAdapter创建代码就没多大问题,但是如果你使用多于一个表,那些表之间有parent-child关系,那么更新/插入就要有点手段了,特别是父表有一个IDENTITY/AutoNumber列。
在这篇文章里,我会展示一些技术来处理这个问题,特别是你在你的数据库里有AutoNumber/IDENTITY列要处理的时候。
在示例里我将使用含有两个表的一个数据库,一个保存Order,一个保存OrderDetails。
OrderDetails表与Order表有一个外键关系,是用过OrderId 列来关联的,这是一个IDENTITY/AutoNumber列。
这篇文章分为两个部分,一个展示了使用Access 2000 数据库的实现,另一个展示SQL Server 数据库使用储存过程的实现。
希望你会喜欢!建立结构 (Access 2000)为了完成我们的示例你需要做的第一件事就是创建一些基本变量来保存我们的DataSet和两个DataAdapter对象(一个为父表,一个为子表)。
基于ADO.NET数据库访问技术浅析
基于ADO.NET数据库访问技术浅析摘要:数据库访问技术是管理信息系统开发中极为重要的一项功能,使用 中的基本应用程序与数据库的连接、检索并显示数据库中的数据、以及更新数据库中的数据。
关键词: 数据库访问数据库更新引言Microsoft ActiveX Data Objects(ADO).NET是一种把基于的Web应用程序以及Microsoft Windows应用程序连接到诸如SQL Server数据库或XML文件等数据源的技术。
专门为诸如Internet这样的无连接的工作环境而设计,它提供了一种简单而灵活的方法,便于开发人员把数据访问和数据处理集成到Web应用程序中。
结构作为一个高效的.NET程序语言。
其混合了函数语言和物件导向程序编制语言,并且完美的是用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。
1 组成及功能是微软.NET框架的一部分,它由一组工具和层组成,应用程序可以借此与基于文件或基于服务器的数据存储很轻松地进行通信和管理。
是在.NET Framework环境中用于访问数据库的一组组件类。
在基于.NET Framework开发的应用程序中,如果要访问数据库,是用是目前的最佳选择。
是与C#和.NET Framework一起使用的类集的名称,用于以关系型的、面向表的格式访问数据。
使用可以更容易地实现对关系和非关系数据的访问,并且统一了XML和关系数据访问,支持Internet上的多层应用程序,与上一代技术相比,可以扩充以支持更多的数据源。
可以使用XML作为通用的数据传送格式。
只要处理数据的不同的平台有XML分析程序,就可以实现不同平台之间极好的互操作性。
其次,具有十分强大的可伸缩性。
对于Web 应用程序来说,很难估计同一个时刻会有多少用户在提交访问。
而在使用ADO时,ADO的可伸缩性不强通常合成为导致服务器崩溃的主要原因之一。
而在中,由于对已经断开连接的数据集并不保存长时间的数据锁和数据连接,所以相比之下,服务器端的负荷就大大减少。
读取数据库中数据
在中,读取数据库中的数据可以使用datareader 和dataset两种方法,两者差异如下:
使用dataset对象读取数据大致需要以下五个步骤:
(1)建立数据库链接,可以选用sqlconnection或者oledbconnection
(2)将查询保存在sqldataadapter或者oledbdataadapter对象中
dim cmd as oledbcommand '声明一个command对象
' 建立command对象,并且指定SQL语句
response.write(server.mappath("user.mdb"))
cmd=new oledbcomm#34; , comm)
'建立dataadapter对象,并指定SQL语句
da=new oledbdataadapter("select * from reg" ,conn)
dim ds as dataset '声明一个dataset对象
da.fill(ds,"注册用户表") ' 在dataset对象中注册一个名为“注册用户表”的数据表
(2)用datatable操作数据
在了解了dataset对象和datatable对象的关系以后,下面将使用datatable来操作数据
如果想借助datatable对象来读取表的内容,必须使用以下两种属性:
● columns属性,数据列信息,此属性为datacolumn对象构成的集合对象
●fieldcount属性表示datareader对象中记录的列数,值得注意的是item属性的索引值是从0开始的,所以最大的索引值是fieldcount-1
DataSet及DataTable用法详解
DataSet及DataTable⽤法详解DataSet是开发⼈员为⽅便数据处理开发出来的,是数据的集合,是为解决DataReader的缺陷设计的,DataReader数据处理速度快,但它是只读的, ⽽且⼀旦移到下⼀⾏,就不能查看上⼀⾏的数据,DataSet则可以⾃由移动指针。
DataSet的数据是与数据库断开的。
DataSet还可⽤于多层应⽤程序中,如果应⽤程序运⾏在中间层的业务对象中来访问数据库,则业务对象需将脱机数据结构传递给客户应⽤程序。
DataSet的功能:浏览、排序、搜索、过滤、处理分级数据、缓存更改等。
还可以与XML数据互换。
DataSet中可包括多个DataTable,可将多个查询结构存到⼀个DataSet中,⽅便操作,⽽DataTable中⼜包括多个DataRow、DataColumn,可通过这些DataRow、DataColumn来查看、操作其中的数据,⽽需将操作结果返回给数据库的话,则可以调⽤DataAdapter的 Update⽅法。
DataSet的操作:DataSet ds=new DataSet();DataTable dt=new DataTable("newTable");ds.Tables.Add(dt);DataSet ds=new DataSet();DataTable dt=ds.Tables.Add("newTable");上述两种⽅法都可以在DataSet中添加⼀个DataTable,看需要⽽进⾏选择。
添加DataTable后,需向其中添加⾏和列。
DataSet ds=new DataSet();DataTable dt=ds.Tables.Add("newTables");DataColumn col=dt.Columns.Add("newColumn",typeof(int));col.AllowDBNull=false;col.MaxLength=4;col.Unique=true;上述代码向DataSet中的DataTable中添加名为”newColumn”,类型为int且不为空,最⼤长度为4和唯⼀性为真的列。
使用dataadapter和dataset更新数据库
使⽤dataadapter和dataset更新数据库DataAdapter 的 Update ⽅法可调⽤来将 DataSet 中的更改解析回数据源。
与 Fill ⽅法类似,Update ⽅法将 DataSet 的实例和可选的DataTable 对象或 DataTable 名称⽤作参数。
DataSet 实例是包含已作出的更改的 DataSet,⽽ DataTable 标识从其中检索更改的表。
当调⽤ Update ⽅法时,DataAdapter 将分析已作出的更改并执⾏相应的命令(INSERT、UPDATE 或 DELETE)。
当 DataAdapter 遇到对DataRow 的更改时,它将使⽤ InsertCommand、UpdateCommand 或 DeleteCommand 来处理该更改。
这样,您就可以通过在设计时指定命令语法并在可能时通过使⽤存储过程来尽量提⾼ 应⽤程序的性能。
在调⽤ Update 之前,必须显式设置这些命令。
如果调⽤了Update 但不存在⽤于特定更新的相应命令(例如,不存在⽤于已删除⾏的 DeleteCommand),则将引发异常。
Command 参数可⽤于为 DataSet 中每个已修改⾏的 SQL 语句或存储过程指定输⼊和输出值。
有关更多信息,请参阅。
如果 DataTable 映射到单个数据库表或从单个数据库表⽣成,则可以利⽤ CommandBuilder 对象⾃动⽣成 DataAdapter 的DeleteCommand、InsertCommand 和 UpdateCommand。
有关更多信息,请参阅。
Update ⽅法会将更改解析回数据源,但是⾃上次填充 DataSet 以来,其他客户端可能已修改了数据源中的数据。
若要使⽤当前数据刷新DataSet,请再次使⽤ DataAdapter 填充 (Fill) DataSet。
新⾏将添加到该表中,更新的信息将并⼊现有⾏。
如何使用DataSet和DataAdapter对象对数据库中数据进行操作
如何使用DataSet和DataAdapter对象对数据库中数据进行操作【摘要】DataSet和DataAdapter是中的两个核心对象,通过DataAdapter对象填充DataSet对象,客户端读取DataSet就可以获得需要的数据了。
【关键词】DataSet对象;DataAdapter对象;数据1.引言在使用构建动态网站时,有时需要对大量的数据进行读取操作,如果应用程序需要从数据库中读取50条数据,那么就需要读取50次,在读取的整个过程和数据库一直保持着连接的状态,这样就给数据库服务器加重了负担,如果还要对这50条数据进行修改,解决这个问题就需要用到DataSet对象和DataAdapter对象。
2.DataSet对象2.1 DataSet对象简介DataSet(数剧集)对象是数据的集合,可以把它作为内存中的数据库,DataSet 对象的指针可以自由移动。
DataSet对象的数据库和数剧是断开的。
类似于生产的工厂,DataSet好比是一个工厂的临时仓库,每天把原料一次取出放入临时仓库,加工完后存在临时仓库中,最后再把一天完成的所有产品一次存放到仓库中。
把数据库中的数据取出后保存在DataSet对象中,这样应用程序可以直接操作DataSet对象中的数据,完成操作后,再通过DataAdapter更新数据库中相应的数据。
DataSet对象是一个或多个DataTable对象的集合,和SQL Server 特别相似,由行、列、主键、外键等数据表中的数据关系信息组成。
DataSet对象由一个或多个数据表组成,每个数据表就是一个DataTable对象,由行和列组成,每一行叫做DataRow,每一列叫做DataColumn。
2.2 创建DataSet对象可使用关键字New创建DataSet对象。
例如:DataSet dt=new DataSet ();DataSet dt=new DataSet(“teachtable”);其中dt是定义的数据集对象,teachtable 为数据集名称,可以省略。
使用DataAdapter操作数据库ASP实验报告
实训9:使用DataAdapter操作数据库实训目的:1)通过上机练习进一步理解数据库连接对象Connection、命令对象Command、数据库适配器DataAdapter在数据库应用程序设计中的相互关系及各对象的创建和使用方法、步骤等。
2)通过本实验理解创建具有基本数据库管理功能(对数据记录的查询、添加、修改、删除)的应用程序和常用方法和技巧。
实训要求:使用DataAdapter对象的Cimmand属性执行SQL语句,实现对数据库记录的查询、添加、修改和删除。
实训步骤:1、为了实现程序的设计要求,将网站规划为4个网页,分别用于实现浏览(Default.aspx)、添加(Add.aspx)、修改(Update)和删除(Del.aspx)数据库记录的功能。
2、数据库浏览功能的实现(1)设计Default.aspx页面新建一个网站,将上次实验中新建的Acess数据库文件复制到站点下(App_Data)文件夹中。
切换到设计视图,向Default.aspx中添加3个链接按钮LinkButton1~3和一个GridView控件。
(2)设置对象属性3个链接按钮LinkButton的ID属性分别为LinkIns、LinkUpdate、LinkDel。
(3)编写程序代码具体程序代码详见参考程序部分。
2、插入新纪录功能的实现在“解决方案资源管理器”中添加一个名为Add.aspx的网页文件然后进行如下设置:(1)设置Add.aspx页面在Add.aspx的设计视图中,添加一个用于布局的HTML表格,向表格中添加必要的说明文字,添加6个文本框控件TextBox1~TextBox6,2个按钮控件Button1、Button2,1个单选钮组空间RadioButtonList1。
(2)设置对象属性设置6个文本框的ID属性分别为TextNo、TextName、TextClass、TextMath、TextChinese、TextEnglish;设置2个按钮的ID属性分别为ButtonSubmit、ButtonBack;设置RadioButtonList1的ID属性为RadioSex,设置RepeatDirection 属性为Horizon,向其中添加两个供选型“男”和“女”。
浅析ASP.NET中的数据库访问技术
提 供 的 接 口 , 让 数 据 显 示 型 对 象 ( 如 调用 C m n 对 象的E eu e ed r o ma d x c tR a e 方 Da a rd 直接显 示数据 ,节省 网页制作时 法 , t G i) 且将其返 回值赋值给 Daa a e 对象 , tRe d r 然 间 。 后该对象 会连 接到 C mma d所开启的数据 o n 方法 二 : 借助 Co mma d对象 访问数据 表 。 n 库 ,使用这一方法要透过 D tR a e 读取 数 aa e d r () 3利用 D t Re d r 象逐步读取数据 aa a e 对 据 ,再应用 R s o s . i 显示数据 ,可能 表 ,然后 填入输 出用 的表 格 。这一 阶段会调 e p n e Wr e t 需 编写较 多 的程序 代码 ,但它 不用额 外 占用 用 O t uT T be up t o a l 子程序所编写的程序如 下 : SUB OUt PUt O a e RD A S T T b1 ( 内存 ,而且读取 数据的速度也 比 D tS t a a e 快。 e t ae) 在具 体的 数据访 问方 式上 ,该选 择何 种 0l DbDa aRe d r Di m I AS I t ge ne r 访问数据方式 ,应视实 际需要 而定 ,如果须借 Di r w a Ta eRO m o s bl W 助 “ 数据显示对象 ”显示数据 , 用方 法一 较 采 Di c l s m el a Ta l Cel b e l 为理想 , 反之 , 用方法二可得到较高 的执 行 采 效率 。 将 数据 表 的 “ 题 ” 填 入 表 格 中 标 R w: e a lR w ) o N w T be o (
; a a ae () tAd p e 用于执行 S 3Daa a tr QL语句 、开 &” ”D tb s ) 启数据表 ,用来充 当 Daa e 对象 与实际数据 tSt C n . p n) onO e( 源之 间桥 梁的对象 。 ( ) t Ad p e 对象 开启 “ 2 Da a a t r 工资 ”数 () a R a e 用于提供 给程 序读取数据 据 表 4D t ed r a Di m S QL= “ ee t } fo 工 资 ” S lc rm 的接 口 。 () a a e 用于提供给程序 及 D tG i 5D tS t a a rd A p = N w O e b d p r Q , om) dt e l A a ( L Cr d e S ( ) a a e 对象 存放 “ 3D tS t 工资 ”数据表 访 问数据 的接 口。 D =Ne Da ae( s w t st) 在上述对象中 , 四中对象附属S s m. 前面 yt e Daa OlD t . e b或 S se DaaS l l n ,最后 y tm. t .q C e t Ad . 1 ( pt Fi1DS,“ 工资 ” ) 个对 象( aa t 属于 S s m. aa命名 D ts ) e 附 yt D t e () t Grd控件 显示 “ 4Da a i 工资 ”数 据表 My rd Da a o re D . b e (工 G i . t S u c = s Ta ls“ 空间, 在程序 中使 用这 些对象 , 应视 自身所使 用的数据 库情况 ,使 用如 下语句 引 用命名空 资” . fu t e ) Dea lViw My i Daa n ( Grd. tBid) 间。 ( ) 闭 G md 5关 Z. b数据库 <%@ I o t Na s a e S se . mp r me p c =” y t m C n C oe ) o n. ls ( D t ”% ( aa > 数据存 放对象) <%@ I o t mp r Na s a e S se . me p c =” y t m 完 成数据 库 的访 问之后 ,应将 数据 库关 D t . l b ”% ( 用的数 据库访问对象) 闭, aa O e D > 通 此时要调 用 C n e t n对象 的 Coe o n ci o ls 方 <%@ I o t mp r Na s a e S se . 法 。 mep c =” y t m Daa q C in %> ( t .S l l t” e 访问 S ev r QL S r e 数 2 2 技术之二 . 技 术 二与技 术一 对数据 库的 开 启 ,关 闭 据库 专用对 象) 工作 是一 样 的 ,不 同之 处在 于 以下 几方 面 。 1 2 访 问数据方法 的选择 .