zoukankan      html  css  js  c++  java
  • ADO.NET对象的详解

    1. Connection 类
    和数据库交互,必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。 
    属性:
    CommandTimeout
    这义了使用 Execute 方法运行一条 SQL 命令的最长时限,能够中断并产生错误。默认值为30秒,设定为0表示没有限制
    ConnectionString
    设定连接数据源的信息,包括 FlieName、Password、Userld、DataSource、Provider 等参数。
    ConnectionTimeout
    设置在终止尝试和产生错误前建立数据库连接期间所等待的时间,该属性设置或返回指示等待连接打开的时间的长整型值(单位为秒),默认值为15。如果将该属性设置为0,ADO 将无限等待直到连接打开。
    DefaultDatabase
    定义连接默认数据库
    Mode
    建立连接之前,设定连接的读写方式,决定是否可更改目前数据。0 一 不设定(默认)、1 一 只读、2 一 只写、3 一 读写。
    State
    读取当前链接对象的状态,取0表示关闭,1表示打开。
     
    方法:
    Open
    打开一个数据库连接
    ChangeDatabase
    改变当前连接的数据库。需要一个有效的数据库名称
    Close
    关闭数据库连接。使用该方法关闭一个打开的连接
    CreateCommand
    创建并返回一个与该连接关联的SqlCommand对象
    Dispose
    释放资源
     
    实例:
     //创建连接数据库的字符串
            string SqlStr = "Server=MRWXK\MRWXK;User Id=sa;Pwd=;DataBase=db_ASPNET";
            //创建SqlConnection对象
            SqlConnection con = new SqlConnection(SqlStr);
            con.Open();//打开数据库的连接
            if (con.State == System.Data.ConnectionState.Open)
            {
                Response.Write("SQL Server数据库连接开启!<p/>");
                //关闭数据库的连接
                con.Close();
            }
            if(con.State==System.Data.ConnectionState.Closed)
            {
                Response.Write("SQL Server数据库连接关闭!<p/>");
            }

    2. Command对象 
    成 功与数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader()方 法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命 令。
    属性:

    Connection

    指定Command对象所使用的Connection对象。

    CommandType

    指定Command对象的类型,有3种选择:

    1 Text:表示Command对象用于执行SQL语句。

    2 StoredProcedure:表示Command对象用于执行存储过程。

    3 TableDirect:表示Command对象用于直接处理某个表。

    CommandType属性的默认值为Text。

    CommandText

    根据CommandType属性的取值来决定CommandText属性的取值,分为3种情况

    1 如果CommandType属性取值为Text,则CommandText属性指出SQL语句的内容。

    2 如果CommandType属性取值为StoredProcedure,则CommandText属性指出存储过程的名称。

    3 如果CommandType属性取值为TableDirect,则CommandText属性指出表的名称。

    CommandText属性的默认值为SQL语句。

    CommandTimeout

    指定Command对象用于执行命令的最长延迟时间,以秒为单位,如果在指定时间内仍不能开始执行命令,则返回失败信息。

    默认值为30秒。

    Parameters

    指定一个参数集合。

    方法:

    ExecuteReader

    执行查询操作,返回一个具有多行多列的结果集。

    ExecuteScalar

    执行查询操作,返回单个值。这个方法通常用来执行那些用到count()或者sum的命令。

    ExecuteNonQuery

    执行插入、修改或删除操作,返回本次操作受影响的行数。

    3. DataReader类
    许多数据操作要求开发人员只是读取一串数据。DataReader对象允许开发人员获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。
    属性:

    Depth

    设置阅读器浓度。对于SqlDataReader类,它总是返回0

    FieldCount

    获取当前行的列数

    Item

    索引器属性,以原始格式获得一列的值

    IsClose

    获得一个表明数据阅读器有没有关闭的一个值

    RecordsAffected

    获取执行SQL语句所更改、添加或删除的行数

    方法:

    Read

    使DataReader对象前进到下一条记录(如果有)

    Close

    关闭DataReader对象。注意,关闭阅读器对象并不会自动关闭底层连接

    Get

    用来读取数据集的当前行的某一列的数据数据

    NextResult

    当读取批处理 SQL 语句的结果时,使数据读取器前进到下一个结果

    实例:
    //连接字符串 
    string strSQL = "SELECT SName,SClass from Student where SNum='" + DropDownList1.SelectedValue + "'";
            SqlCommand oCmd;//连接数据库命令
            SqlDataReader oDR = null;
            oCmd = new SqlCommand();
            StudentDA.GetBDConnection();
            oCmd.Connection = StudentDA.aConnection;
            oCmd.Connection.Open();
            oCmd.CommandText = strSQL;
            oDR = oCmd.ExecuteReader();
            while (oDR.Read())
            {
                txtSName.Text = oDR["SName"].ToString();
                txtClass.Text = oDR["SClass"].ToString();
            }
            StudentDA.CloseSqlDataReader(oDR);
            StudentDA.CloseConnection();
    4. DataAdapter类
    某些时候开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数 据库调用的次数。DataAdapter通过断开模型来帮助开发人员方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数 据库的时候,DataAdapter填充(fill)DataSet对象。DataAadapter包含对连接对象以及当对数据库进行读取或者写入的时候 自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT、INSERT、UPDATE和DELETE操作的 Command 对象引用。开发人员将为DataSet中的每一个Table都定义DataAadapter,它将为开发人员照顾所有与数据库的连接。所以开发人员将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。
    它的主要成员是DataSet和DataTable,其他成员可以简单理解成这两个类的组成类。下面主要介绍DataSet和DataTable。
    属性:

    DeleteCommand

    获取或者设置用于在数据源中删除记录的命令

    InsertCommand

    获取或设置用于将新纪录插入到数据源中的命令

    SelectCommand

    获取或者设置用于在数据源中选择记录的命令

    UpdateCommand

    获取或者设置用于在数据源中更新记录的命令
    方法:

    Dispose

    删除该对象

    Fill

    用从源数据读取的数据行填充至DataSet对象中

    FillSchema

    将一个DataTable加入到指定的DataSet中,并配置表的模式

    GetFillParameters

    返回一个用于SELECT命令的DataParameter对象组成的数组

    Update

    在DataSet对象中的数据有所改动后更新数据源。

    实例:(本例主要是绑定到Gridview上)
     string sqlstr = "select TNum,TName,TSex,TBirth,TProf,TEdu,TRemark,TStatus,TPassword from Teacher";
            SqlConnection sqlcon = new SqlConnection(StudentDA.conStr);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, "Teacher");
            GridView1.DataSource = myds;
            GridView1.DataBind();
            StudentDA.CloseConnection();
     
    6. DataSet对象
    DataSet 对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。开发人员甚至能够定义 表之间的关系来创建主从关系。DataSet是在特定的场景下使用,帮助管理内存中的数据并支持对数据的断开操作的。DataSet是被所有DataProviders使用的对象,因此它并不像Data Provider一样需要特别的前缀。
    属性:
    Tables
    数据集中包含的数据表的集合。

    Ralations

    数据集中包含的数据联系的集合。
    DataSetName
    用于获取或设置当前数据集的名称
    HasErrors 用于判断当前数据集中是否存在错误
    方法:
    Clear

    清除数据集包含的所有表中的数据,但不清除表结构。

    Clone

    复制DataSet的结构,包括所有的DataTable架构关系和约束。不复制任何数据。

    Copy

    复制DataSet的结构和数据

    AcceptChanges

    提自加载此DataSet或上次调用以来对其进行的修改
     
    7. DataTable类
    DataTable与数据库中的table很相似,你几乎完全可以按照数据库中的table来理解DataTable,包括行和列等等。反正你就按照table来理解它就对了。最后,简单说一下这些对喜爱对象之间的关系。Connection 对象提供数据来源的连接。Command 对象可让开发人员存取操作数据库的命令,以便传回数据、修改数据、执行预存程序 (Stored Procedure),并且传送参数信息。DataReader则可提供来自数据来源的高效能数据流。最后,DataAdapter会提供 DataSet 对象与数据来源之间的桥接器 (Bridge)。DataAdapter 会使用 Command 对象,在数据来源处执行 SQL 命令,以便将数据载入 DataSet,并且也能将 DataSet 内的数据变更更新到数据库。
     
  • 相关阅读:
    漫步ASP.NET MVC的处理管线
    HTTP压力测试工具
    javaweb学习总结(四十)——编写自己的JDBC框架
    javaweb学习总结(三十九)——数据库连接池
    javaweb学习总结(三十八)——事务
    javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
    javaweb学习总结(三十六)——使用JDBC进行批处理
    JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
    javaweb学习总结(三十四)——使用JDBC处理MySQL大数据
    javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD
  • 原文地址:https://www.cnblogs.com/penglei-it/p/5220080.html
Copyright © 2011-2022 走看看