ADO.NET数据库编程

2019-08-29 20:31

ADO.NET数据库编程

1、ADO.NET的相关概念。

Microsoft的新一代技术,是ADO组件的后继者。 主要目的是在.NET Framework平台存取数据。

提供一致的对象模型,可以存取和编辑各种数据源的数据,即对这些数据源,提供了一致的数据处理方式。

ADO.NET保存和传递数据是使用XML格式。可实现与其他平台应用程序以XML文件进行数据交换。

2、数据访问类库的名称空间

针对不同的数据源,使用不同名称空间的数据访问类库,即数据提供程序。常用的数据源包括四种:

Microsoft SQL Server数据源:使用System.Data.SqlClient名称空间。 OLEDB数据源:使用System.Data.OleDb名称空间。 ODBC数据源:使用System.Data.Odbc名称空间。 Oracle数据源:使用System.Data.OracleClient名称空间

要使用ADO.NET 来访问数据库,需要将相应的名称空间导入到应用程序中,如下: System.Data是通用的名称空间,其中包含组成ADO.NET核心体系结构的所有类。 System.Data.Oledb 名称空间供ADO.NET 管理提供程序访问支持OleDb的数据源时使用。

System.Data.SQLClient 名称空间供 SQL Server管理提供程序使用。该名称空间是专为 Microsoft SQL Server 而设计的,对于以前版本的 SQL Server,可以提高其性能。

如:using System.Data;

using System.Data. SqlClient;

System.Data.OleDb和System.Data.SqlClient名称空间的类名称相同,只是字头不同。 之所以分成两组类,主要目的是提供一组最佳化SQL Server数据库存取的类。 OleDb字头的类是使用OLEDB提供者数据源的数据库。例如Access和Oracle等数据库。 Sql字头的类只能使用在SQL Server7.0以上版本,直接和服务器端的SQL Server通信,因为不通过OLE DB和ODBC,所以可以明显提升整体的执行效率。 3、ADO.NET的组成

ADO.NET用于访问和处理数据的类库包含以下两个组件: .NET Framework 数据提供程序

DataSet

ADO.NET 数据提供程序的四个核心对象: Connection建立到指定资源的连接 Command对一个数据源执行命令。公开Parameters,在 Connection 的 Transaction 范围内执行。

DataReader从一个数据源读取的只读数据流。

DataAdapter填充一个 DataSet,解析数据源的更新。

ADO.NET是使用Connection对象建立与数据源的数据链路,然后使用Command对象执行命令来获取数据源的数据,对数据库来说就是使用SQL命令。

在获取数据源的数据后,就可以填入DataReader或DataSet对象,最后使用数据绑定在Web控件显示记录数据。

Connection对象

可以建立与数据源间的连接;对数据库来说,还负责初始化数据库。 有两种:OleDbConnection对象和SqlConnection对象。

Web服务器和数据库系统本属于两套不同的应用程序,通过ODBC或OLE DB可以打开数据源的数据库,Connection对象进一步将ASP.NET程序和数据库连接起来。

Command对象

可以对数据源执行命令,对数据库来说,就是执行SQL命令。

ASP.NET程序可以使用Command对象发送SQL命令来插入、删除、更新和查询数据表的记录。

需要先使用Connection对象建立数据库连接后,才能使用Command对象执行SQL命令。 两种:OleDbCommand对象和SqlCommand对象。 DataReader对象

可以从数据源使用Command对象执行命令,获取“只读”(Read-Only)和“只能向前”(Forward-Only)的流数据。

每次只能从数据源读取一行数据保存到内存。

获取的数据为只读,不允许插入、删除和更新记录,其目的是显示查询结果。 两种:OleDbDataReader对象和 SqlDataReader对象。

DataAdapter 和 DataSet 类满足了支持数据库访问的断开连接模型这一需求。 DataSet 是 ADO.NET 断开连接体系结构中主要的数据存储工具。填充 DataSet 时,必须创建一个 DataAdapter 来填充 DataSet。

DataAdapter 连接数据库,执行查询并填充 DataSet。当 DataAdapter 调用 Fill 或 Update 方法时,在后台完成所有的数据传输。每个 .NET Framework 的数据提供程序都有一个 DataAdapter 对象。 DataAdapter 能控制与现有数据源的交互。DataAdapter 也能将对 DataSet 的变更传输回数据源中。

一个 DataSet 代表一组完整的数据,包括表格、约束条件和表关系。DataSet 能够存储代码创建的本地数据,也能存储来自多个数据源的数据,并断开到数据库的连接。

DataSet和DataTable对象

DataSet对象是由DataTable对象组成的集合对象,可代表保存在内存的数据库。 每一个DataTable保存一个数据表的记录数据,并且可以设定数据表间的关联性。 属于System.Data名称空间,用DataAdapter类的方法Fill()将数据表的数据填入DataSet对象。

可以在DataTable对象中插入和删除行,即处理数据表的记录,最后使用DataAdapter类将DAtaTable对象中的数据更新到数据库。 4、使用ADO.NET SQL命令执行数据库操作 分为两种方式:

使用ADO.NET的Command对象配合SQL语法; 使用ADO.NET的DataSet对象;

(1)可用Command对象执行SQL命令;用Connection对象来建立数据库连接。 步骤:

导入所需的名称空间; 建立和打开数据库连接; 建立Command对象;

执行SQL命令处理数据库; 关闭数据库连接; 实例演示。

建立Connection对象的语法: SqlConnection objcon;

objcon=new SqlConnection(strDbCon);

上述代码建立了名为objCon的SqlConnection对象。 strDbCon变量是数据源字符串,如:

strDbCon=\上述字符串中以“;”分隔

建立好Connection对象后,就可以使用Open()方法打开数据库连接: objCon.Open()

Connection对象的相关方法: Open()和Close()

Connection对象的相关属性:

ConnectionString;ConnectionTimeout Database;DataSource; Provider;State

上述属性在连接打开后都成为只读属性;

在连接打开前,可以设定这些属性,如: objCon.ConnectionTimeout=30

上述设定与在连接字符串中指定功能等同;

在打开数据库连接后,就可以建立Command对象来指定欲执行的SQL命令字符串: SqlCommand objcom;

objcom = new SqlCommand(strsql, objCon);

上述代码使用SqlCommand类建立Command对象;第一个参数是SQL命令字符串;第二个参数是建立的Connection对象:

实例演示:使用sql语句SELECT CategoryID, CategoryName FROM Categories,创建查询表Categories的命令的代码如下:

SqlCommand cmd;

cmd=new SqlCommand(\CategoryID, CategoryName FROM dbo.Categories\Command对象的相关属性:

Parameters:用来访问输入及输出参数和返回值。

SqlCommand支持命名参数。添加到Parameters集合的参数的名称必须与SQL语句或存储过程中的参数标记的名称相匹配。

OleCommand不支持命名参数,用问号占位符标记参数,则向Parameters集合中添加参数的顺序必须与定义的参数顺序相匹配。

如:

SqlParameter param; ?? objcmd = new SqlCommand(%username,password from userinfo where username like @name \

param = objcmd.Parameters.Add(\param.Value = tbname.Text;

SqlDataReader objdr = objcmd.ExecuteReader(); ??

Command对象的相关属性: CommandType:命令类型,

可选CommandType.StoredProcedure、 CommandType.Text、

CommandType.TableDirect 如:Sale是存储过程

cmd =new SqlCommand(“sale”,con)

cmd.CommandType=CommandType.StoredProcedure 在打开数据库连接,建立Command对象后,就可以用Command对象的ExecuteNonQuery()方法来执行SQL命令,如:

count=objCmd.ExecuteNonQuery()

Count可以获取响应的记录数。此方法不会回发记录数据。 Command对象公开了几个可用于执行所需操作的Execute方法: ExecuteReader:当以数据流的形式返回结果时,使用ExecuteReader可返回DataReader对象。

ExecuteScalar:使用ExecuteScalar可返回单个值。

ExecuteNonQuery:使用ExecuteNonQuery可执行不返回行的命令。

使用DataReader对象的Read方法可从查询结果中获取行。 例如,循环显示SqlDataReader—dtr的数据的代码如下: While(dtr.Read()) {

lblMessage+=\ lblMessage+=dtr[\ lblMessage+=\

lblMessage+=dtr[\姓名\}

完成数据库操作后,使用Connection对象的Close()方法关闭数据库连接: objCon.Close(); 实例演示。

小结:使用数据提供程序访问数据库操作的典型步骤如下:

建立数据库连接; 创建SQL命令; 执行SQL命令; 处理SQL命令结果。

实例演示用SQL命令实现数据的增、删、改功能。 课堂练习:按要求编写程序。 5、DataSet对象的数据库操作

DataSet对象的数据库操作需要将数据库先保存在内存的DataTable对象,然后在内存的数据表插入、删除和更新记录,最后使用DataAdpater对象更新数据表的记录数据。

使用DataAdapter和DataSet访问数据库的典型步骤如下: (1)建立数据库连接;

(2)建立DataAdapter对象;

如:SqlDataAdapter objDataAdapter=new SqlDataAdapter(strsql,objCon); (3)建立DataSet对象填入记录数据;

如:objDataAdapter.Fill(objDataSet,”Users”); (4)在DataTable中执行数据库操作; (5)更新数据表的记录数据。

如:count=objDataAdapter.Update(objDataSet,”Users”) (6)关闭数据库连接

DataSet对象使用DataAdapter对象来获取记录数据,它是DataSet和Connection对象数据源之间的桥梁,可以获取DataSet的记录数据和更新数据源的记录数据。

如:

SqlDataAdapter objadapter;

sqlstr=“select * from userinfo”;

objadapter=new SqlDataAdapter(sqlstr,objcon);

SqlCommandBuilder objcmdbuilder =new SqlCommandBuilder(objadapter) ‘上述代码建立的对象配合Dataset,可自动生成所需的SQL命令

DataAdapter的Fill方法使用DataAdapter的SelectCommand的结果集来填充DataSet。 例如:

SqlConnection con;


ADO.NET数据库编程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:河道湖泊岸线管理利用规划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: