C#-数据访问技术

数据库:

数据存储和管理技术     

ADO.NET就是这样一种技术

分类:

单机版数据库、网络版数据库

小型数据库、中型数据库、大型数据库、海量数据库

非关系型数据库、关系型数据库


SQL语言(后补充)

Structured Query Language 结构化查询语言

与DBMS通信的一种语言和工具

select   insert  update  delete


ADO.NET

一组类  一组组件  一系列方法 :向.NET程序员公开数据访问服务

支持两种访问数据的模型:无连接模型:DataSet       连接模型

ADO.NET对象模型的各部分:DataBase  Connection  DataAdapter  DataReader  DataSet  DataTable


Connection对象    

建立与数据库的物理连接

4种:SQL Server数据提供程序 System.Data.SqlClient

         ODBC数据提供程序 System.Data.Odbc

         OLEDB数据提供程序 System.Data.Oledb

         Oracle数据提供程序 System.Data.OracleClient

属性:public override ConnectionState {get;}     判断数据库的连接状态

           属性值:ConnectionState枚举 

                         Broken:与数据源的连接中断。只有在连接打开之后才可能发生。可以关闭处于这种状态的连接,重新打开。

                         Closed:连接处于关闭状态。

                         Connecting:连接对象正在与数据源连接

                         Executing:连接对象正在执行命令

                         Fetching:连接对象正在检索数据

                         Open:连接处于打开状态

方法:Open();   打开数据库

          Close();   关闭一个连接,当使用Close()关闭连接后,还可以调用Open()方法打开连接

          Dispose();   关闭一个连接,清理连接所占用的资源,使用Dispose()关闭连接后,不可以直接用Open()方法打开连接,必须再次重新初始化连接后再打开。


Command对象    

数据命令对象 主要功能:向数据库发送查询、更新、删除、修改操作的SQL语句

4种:SqlCommand OleDbCommand  OdbcCommand  OracleCommand

属性:Connection:设置SqlCommand使用的SqlConnection

          CommandText:要对数据源执行的SQL语句或存储过程

          CommandType:指定CommandText的类型  3个枚举成员:StoredProcedure 存储过程的名称

                                                                                                       TableDirect 表的名称

                                                                                                       Text:SQL文本命令

方法:public override int ExecuteNonQuery();

执行SQL语句,返回受影响的行数,在使用SqlCommand向数据库发送增、删、改命令时,通常使用ExecuteNonQuery方法执行发送的SQL语句。

          public SqlDataReader ExecuteReader();

执行SQL语句,并生成一个包含数据的 SqlDataReaderdui'对象的实例。

           public override Object ExecuteScalar();

执行SQL语句,返回结果集中的第一行的第一列或空引用 (如果结果集为空)。ExecuteScalar()通常与聚合函数一起使用,常见的聚合函数,如下:

     AVG(expr):列平均值,该列只能包含数字

    COUNT(expr)/COUNT(*):列值的计数(expr)/表或分组中所有行的技术(*)忽略空值,但COUNT(*)在计数中包含空值

    MAX(expr):列中最大值(文本数据类型中按字母顺序排在最后的值),忽略空值

    MIN(expr):列中最小值(文本数据类型中按字母顺序排在最前的值),忽略空值

    SUM(expr):列值的和,该列只能包含数据


DataReader对象    

数据读取器对象,提供只读向前的游标,如果应用程序需每次从数据库中取出最新的数据,或者只是需要快速读取数据,并不需要修改数据,就可以使用DataReader对象进行读取。

4种:SqlDataReader  OleDbDataReader  OdbcDataReader  OracleDataReader

属性:public override bool HasRows{get;}  该SqlDataReader是否包含一行或多行

方法:public override bool Read();  使SqlDataReader前进到下一条记录,SqlDataReader的默认位置在第一条记录前面。

           public override void Close();在使用完SqlDataReader对象后,要使用Close方法关闭SqlDataReader对象。

(注)对于每个关联的SqlConnection,一次只能打开一个SqlDataReader,在第一个关闭之前,打开另一个将失败。


      DataAdapter 数据适配器

DataSet与数据源之间的桥梁

属性:

SelectCommand:向数据库发送查询SQL语句

DeleteCommand:向数据库发送删除SQL语句

InsertCommand:向数据库发送插入SQL语句

UpdateCommand:向数据库发送更新SQL语句

方法:

public int Fill(DataSet dataSet, string srcTable);       dataSet:要填充的DataSet   srcTable:用于表映射的源表的名称

     用数据填充DataSet,返回已在DataSet中成功添加或刷新的行数。

     Fill()方法使用select语句从数据源中检索数据,与select命令关联的Connection对象必须有效,但不需要Open().

public int Update(DataTable dataTable);    dataTable:用于更新数据源的DataTable

     将DataSet中修改过的数据及时更新到数据库,返回DataSet中成功更新的行数 。

     在使用Update()方法之前,实例化一个CommandBuilder类,他能自动根据DataAdapterde的SelectCommand的SQL语句判断其他的DeleteCommand/InsertCommand/UpdateCommand。


DataSet 数据集

像存放于内存的一个小型数据库,可以包含数据表/数据列/数据行/视图/约束/关系。

数据来源:数据库/XML

方法:

public void Merge(DataSet dataSet, bool preserveChanges, MissingSchemaAction missingSchemaAction);

     dataSet:其数据和架构将被合并到DataSet中

     preserveChanges:要保留当前DataSet中的更改,则为true,否则为false

     missingSchemaAction:MissingSchemaAction枚举:

                                    Add:添加必需的列以完成架构

                                    AddWithKey:添加必需的列和主键信息以完成架构,用户可以在每个DataTable上显示设置主键约束,这将      确保对现有记录匹配的传入记录进行更新,而不是追加。

                                    Error:如果缺少指定的列映射,则生成InvalidOperationException

                                    Ignore:忽略额外列

    (注)当DataSet对象为null时,无法进行合并

public DataSet Copy();

可以:创建DataSet的原样副本,其中包含架构/数据/行状态信息/行版本

 

           创建包含现有DataSet的架构,但仅包含已修改行的DataSet。可以返回已修改的所有行或者指定特定的DataRowState

           仅复制DataSet的架构(即关系结构),而不复制任何行。可以使用ImportRow将行导入现有的DataTable。

本文是《C#从入门到精通》一书中的13章,源码路径待补充…………

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值