zoukankan      html  css  js  c++  java
  • ADO.net中常用的对象有哪些?分别描述一下.

    Command对象

    1.Command对象概述

      Command对象可以使用数据库命令直接与数据源进行通信。它的属性如下:

      Name:Command对象的程序化名称。在代码中使用此名称来引用Command对象。

      Connection:对Connection对象的引用,Command对象将使用该对象与数据库通信。

      CommandType:Text | StoreProduce | TableDirect。

      CommandText:SQL语句 | StoreProduce。

      Parameters:命令对象包含的参数。  

      可以通过一下三种方式来创建Command对象:

    方式一

    string strConn, strSQL;

    strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

    strSQL = "SELECT CustomerID,CompanyName FROM Customers";

    OleDbConnection cn = new OleDbConnection(strConn);

    cn.Open();

    OleDbCommand cmd;

     

    cmd = cn.CreateCommand();

    cmd.CommandText = strSQL;

    方式二

    string strConn, strSQL;

    strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

    strSQL = "SELECT CustomerID,CompanyName FROM Customers";

    OleDbConnection cn = new OleDbConnection(strConn);

    cn.Open();

    OleDbCommand cmd;

     

    cmd = new OleDbCommand();

    cmd.CommandText = strSQl;

    cmd.Connection = cn;方式三

    string strConn, strSQL;

    strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

    strSQL = "SELECT CustomerID,CompanyName FROM Customers";

    OleDbConnection cn = new OleDbConnection(strConn);

    cn.Open();

    OleDbCommand cmd;

     

    cmd = new OleDbCommand(strSQL, cn);

     

      2.Command对象参数

      常用属性如下:

      ParameterName:参数名称,如"@CatID"。

      DbType,SqlType,OleDbType:参数的数据类型。

      Direction:ParameterDirection枚举值。

                       ParameterDirection.Input(默认值)| ParameterDirection.InputOutput | 

                       ParameterDirection.Output | ParameterDirection.ReturnValue

     

      3.执行

      四种执行方式:

    ExecuteNonQuery() 返回受命令影响的行数。

    ExecuteScalar()   返回第一行第一列(使用与集函数)。如Count(*),Sum,Avg等聚合函数。       

    ExecuteReader() 返回一个DataReader对象。如果SQL不是查询Select,则返回一个没有任何数据的System.Data.SqlClient.SqlDataReader类型的集合(EOF)。

    ExecuteXmlReader()返回一个XmlReader对象。

      4.参数化查询

    使用示例

    string strConn, strSQL;

    strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

    OleDbConnection cn = new OleDbConnection(strConn);

    cn.Open();

    strSQl = "SELECT OrderID,CustomerID,EmployeeID,OrderDate FROM Order WHERE CustomerID = ?";

    OleDbCommand cmd = new OleDbCommand(strSQl,cn);

    cmd.Parameters.Add("@CustomerID",OleDbType.Wchar,5);

    cmd.Parameters[0].Value = "ALFKI";

    OleDbDataReader rdr = cmd.ExecuteReader();

    ----------------------------------------------------------------------------------------------------------------------------

    Connection对象可用于连接到数据库管理数据库的事务。

    1.Connection对象的创建

          4种数据库连接方式:

        OLEDB:System.Data.Oledb.OledbConnection

        SQL:System.Data.SqlCilent.SqlConnection

        ODBC:System.Data.Odbc.OdbcConnection

    Oracle:System.Data.OracleClient.OracleConnection

     

          我们来看一个OleDbConnection创建的实例,一共有2种方法。

    第一种:创建一个没有初始化的OleDbConnection对象,然后用ConnectionString来初始化。

    创建Connection对象

    String strConn;

    strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

    OleDbConnection cn;

    cn = new OleDbConnection();

    cn.ConnectionString = strConn;

     

    第二种:使用构造函数来初始化OleDbConnection对象。

    创建Connection对象

    String strConn;

    strConn = "Provider=SQLOLEDB;Data Source={local)\\NETSDK;Initial Catalog=Northwind;Trusted_Connection=Yes;";

    OleDbConnection cn;

    cn = new OleDbConnection(strConn);

     

     2.连接字符串

    连接字符串的几个常用参数:

    Provider:这个属性用于设置或返回连接提供程序的名称,仅用于OleDbConnection对象。

    Connection Timeout或Connect Timeout:在中止尝试并产生异常前,等待连接到服务器的连接时间长度(以秒为单位)。默认是15秒。

    Initail Catalog:数据库的名称。

    Data Source:连接打开时使用的SQL Server名称,或者是Microsoft Access数据库的文件名。

    Password:SQL Server帐户的登录密码。

    User ID:SQL Server登录帐户。

    Integrated Security或Trusted Connection:此参数决定是否是安全连接。可能的值有True、False和SSPI(SSPI是True的同义词)。

    Persist Security Info:当设置为False时,如果连接是打开的或曾经处于打开状态,那么安全敏感信息(如密码)不会作为连接的一部分返回。设置属性值为True可能有安全风险。False是默认值。

     

    3.打开和关闭连接

    Open 方法:打开连接   

    Close 方法:关闭连接

    注:如果使用了连接池,关闭连接对象不会真正地关闭对数据源地连接。

    如果只用DataAdapter,就不必显式地打开和关闭连接。当调用这些对象的方法时(Fill方法、Update方法)会自动检查连接是否打开。

    ----------------------------------------------------------------------------------------------------------------------------

    DataReader对象

    1.DataReader对象概述

    DataReader对象只能对查询获得的数据集进行自上而下的访问,但效率很高。如果仅仅是访问数据的话,可以使用DataReader。但DataReader要求一直连接,所以将结果的一小部分先放在内存中,读完后再从数据库中读取一部分,相当于一个缓存机制。这对于查询结果百万级的情况来说,带来的好处是显而易见的。

      DataReader对象有如下几个特点:

    快速访问数据。由于DataReader对象是只进和只读的,所以开销相对较小,速度比DataSet快。

    只进和只读。不能处理数据,只能显示数据。

    自己管理连接。DataAdapter对象可以自动地打开和关闭连接,DataReader对象必须显式地打开和关闭连接。

    使用较少地服务器资源。

     

      2.创建DataReader对象

      具体步骤:

      (1)创建和打开数据库连接。

      (2)创建一个Command对象。

      (3)从Command对象中创建DataReader。

      (4)执行ExecuteReader对象。

      (5)使用DataReader对象。

      (6)关闭DataReader对象。

      (7)关闭Connection对象。

     

    DataReader对象创建示例

    DataReader对象使用示例

    //打开Connection并创建Command

    SqlConnection conn = new SqlConnection("data source=localhost;integrated security=true;initial catalog=pubs;");

    conn.Open();

    SqlCommand cmdAuthors = new SqlCommand("select * from Authors", conn);

     

    //创建DataReader对象并读取数据

    SqlDataReader dr;

    dr = cmdAuthors.ExecuteReader();

    while(dr.Read())

    {

      ListBox.Items.Add(dr["au_lname"]+","+dr["au_fname"]);

    }

     

    //关闭DataReader和Connection

    dr.Close();

    conn.Close();

     

      当使用DataReader对象进行连接时,需要使用Try...Catch...Finally语句,这样可以确保若在某方面失败,连接将会关闭。否则,连接会无限期保持打开状态。

     

    捕捉错误

    try

    {

       conn.Open();

       dr = cmdAuthors.ExecuteReader();

       //使用DataReader中返回的数据

    }

    catch

    {

        //错误处理

    }

    finally

    {

        dr.Close();

        conn.Close();

    }

      3.从DataReader读取数据

      为每个记录调用Read方法:可以调用Read方法来访问DataRead对象中的一个记录,因为DataReader对象中的默认位置是在第一个记录的前面,所以必须在访问任何数据之前调用Read方法。当不再有可用记录时,Read方法就返回一个空值。

    调用Read方法示例

    while (dr.Read())

    {

        lbName.Text += dr["au_name"];

    }

      访问字段:可以通过顺序位置,名字或者调用适当的Get方法来访问一个字段,Get方法包括GetDateTime,GetDouble,GetInt32或GetString等。

    调用Get方法来访问数据

    dr.Read();

    lbName.Text =dr.GetString(1) + "," +dr.GetString(2);

    通过名字引用当前记录的数据字段

    dr["au_fname"];

     

    ----------------------------------------------------------------------------------------------------------------------------

    在ADO.NET中DataSet的作用是为数据源提供一个断开式的存储,而不必关心数据源,操作只用在DataSet中进行就行了。

      DataSet中的几个重要对象:

    TablesCollection对象:DataSet里的表用DataTable来表示,一个DataSet里面可以包含多个DataTable,这些DataTable就构成了TablesCollection对象。每个DataTable中都包含一个ColumnsColleciton和一个RowsCollection对象。

    RelationsCollection对象:各个DataTable之间的关系通过DataRelation来表达,这些DataRelation构成的集合就是RelationsCollection对象。

    ExtendedProperties对象:这个对象用来定义特定的信息,比如密码、更新时间等。

     

      1.DataTable对象

    创建一个DataTable:

    DataTable MyTable;

    MyTable = new DataTable ("Test");

    MyTable.CaseSensitive = False;//是否区分大小写

    MyTable.MinimumCapacity = 100;//数据库的最小记录空间

     

    创建表列

    DataTable MyTable;

    DataColumn MyColumn;

    MyTable = new DataTable ("表名");

    MyColumn = MyTable.Columns.Add("列名",typeof(string));

    MyColumn = MyTable.Columns.Add("列名",typeof(int));

    创建表达式列

    示例

    //方法一

    DataColumn tax = new DataColumn();

    tax.DataType = typeof(Currency);

    tax.Expression = "total*rate*0.20";

    //方法二

    MyTable.Columns.Add("tax", typeof(Currency), "total*rate*0.20");

     

      2.DataView对象

      DataView就时数据视图,为数据库结构提供了外模式的实现。同时DataView也可以为窗体控件和Web控件提供数据绑定功能,在每一个DataTable中内建了一个DataView为:DataTable.DefaultView()。

      创建DataView:

    DataView sortedView=new DataView(dataTable);

       对DataView进行排序:

    dataTable.DefaultView.sort="lastName";

    dataTable.DefaultView.sort="lastName,FirstName DESC";

      对DataView进行筛选和排序:

    通过RowFilter属性设置实现筛选

    DataView dv = new DataView(ds.Tables["Authors"]);

    dv.RowFilter = "state = 'CA'";

    dv.Sort = "au_lname";

     

      3.DataColumn对象

    示例

    DataColumn colCustomerID = dtCustomers.Columns.Add("CustomerId",typeof(Int32));

    colCustomerID.AllowDBNull = false;

    colCustomerID.Unique = true;

     

      4.DataRow对象

      调用NewRow方法来创建一个新的DataRow对象

    创建DataRow对象

    DataRow drNewEmployee = dtEmployees.NewRow();

    //使用索引或列名操作新行

    drNewEmployee(0) = 11;

    drNewEmployee(1) = "Smith";

    //调用Add方法将行添加到DataRowCollection中

    dtEmployees.Rows.Add(drNewEmployee);

      对行进行批处理更改:

      BeginEdit()开始更改,EndEdit()结束更改,同时将更改结果写入DataSet,CancelEdit(),取消更改

      例如:

    row.BeginEdit();

    对row进行更改

    row.EndEdit();

     

      从DataTable中删除DataRow对象:

      一:DataRowCollection对象的Remove方法

    示例

    DataRow drEmployee = dtEmployees.Rows(3);

    dtEmployees.Rows.Remove(drEmployee);

      二:DataRow对象的Delete方法

    示例

    drEmployee.Delete;

      比较:Remove方法时从DataRowCollection中删除DataRow,而Dalete方法只是对删除的行做标记。

      DataRow类包括RowState属性。RowState属性值表示从第一次创建DataTable(或从数据库加载DataTable)开始,行是否发生更改,如何更改以及通过何种方式更改。属性的可选值:Modified | Detached | Added。

     

      5.创建表关系

    示例

    //创建DataRelation

    DataRelation dr;

    DataColumn parentCol;

    DataColumn childCol;

     

    parentCol = ds.Tables["Customers"].Columns["CustomerID"];

    childCol = ds.Tables["Orders"].Columns.["CustomerID"];

    dr = new DataRelation("CustOrders", parentCol, childCol);

    ds.Relations.Add(dr);

     

    currentParentRow = ds.Tables["Customers"].Rows[DataGridName.SelectedIndex];

    foreach(DataRow r in currentParentRow.GetChildRow("CustOrders"))

    {

      Lable1.Text += r["OrderID"] + ",";

    }

    6.绑定数据

    示例一

    GridView.DataSource = ds;

    GridView.DataMember = "Authors";

    GridView.DataBind();示例二

    GridView.DataSource = ds.Tables["Authors"];

    GridView.DataBind();示例三

    DataView dv = new DataView(ds.Tables["Authors"]);

    dv.RowFilter = "state = 'CA'";

    GridView.DataSource = dv;

    GridView.DataBind();

     

    DataAdapter(即数据适配器)对象是一种用来充当DataSet对象与实际数据源之间桥梁的对象。DataSet对象是一个非连接的对象,它与数据源无关。而DataAdapter则正好负责填充它并把它的数据提交给一个特定的数据源,它与DataSet配合使用,可以执行新增、查询、修改和删除等多种操作。

    DataAdapter对象是一个双向通道,用来把数据从数据源中读到一个内存表中,以及把内存中的数据写回到一个数据源中。两种情况下使用的数据源可能相同,也可能不相同。而这两种操作分别称作填充(fill)和更新(update)。
        DataAdapter对象的常用属性如表1所示。 

    表1  SqlDataAdapter对象的属性

    属性

    描述

    DeleteCommand

    获取或设置一个语句或存储过程,以从数据集删除记录

    InsertCommand

    获取或设置一个语句或存储过程,以在数据源中插入新记录

    SelectCommand

    获取或设置一个语句或存储过程,用于在数据源中选择记录

    UpdateBatchSize

    获取或设置每次到服务器的往返过程中处理的行数

    UpdateCommand

    获取或设置一个语句或存储过程,用于更新数据源中的记录

       DataAdapter对象的常用方法如表2所示

                              表2   SqlDataAdapter对象的方法

    方法

    描述

    Dispose

    删除该对象

    Fill

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

    FillSchema

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

    GetFillParameters

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

    Update

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

       关于DataAdapter对象中常用的Fill和Update方法,下面以SqlDataAdapter(DataSet 和 SQL Server 之间的桥接器)为例进行说明。

       当SqlDataAdapter对象通过Fill 方法填充DataSet对象时,它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。但是,除非将MissingSchemaAction属性设置为AddWithKey,否则这个隐式创建的架构中不包括主键信息。也可以使用FillSchema方法,让SqlDataAdapter对象创建DataSet对象的架构,并在用数据填充它之前就将主键信息包括进去


    作者:古梅飞动
    公司:蜜团科技
    出处:http://www.mitsofts.com/index.php
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    linux shell 中"2>&1"含义-完美理解-费元星
    浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID -费元星
    费元星-关于百度在数据仓库-层级架构上的思考
    费元星的第二代车,基于图像识别和超声波的无人智能小车
    【完美解决】Spark-SQL、Hive多 Metastore、多后端、多库
    【费元星】crt 无法上传文件,总是显示盾牌表示-完美解决
    【费元星原创】一键安装Hadoo2.7.6 集群完全分布式脚本-完美解决
    【研发工具必备】费元星的技术成长流线图-第一版
    【shell mysql 导出数据到csv脚本,完美解决乱码转义符等问题】-费元星
    【Linux搭建创建FTP服务器】---完美解决
  • 原文地址:https://www.cnblogs.com/luhuan860/p/1745761.html
Copyright © 2011-2022 走看看