• ADO.NET中DataSet的应用(读书笔记5)


    一.思维导图

     

    二.知识点

    DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。

    命名空间:System.Data

    表示数据在内存中的缓存。

     

    1.在实际应用中,DataSet使用方法一般有三种

    (1) 把数据库中的数据通过DataAdapter对象填充DataSet。

    (2) 通过DataAdapter对象操作DataSet实现更新数据库。

    (3) 把XML数据流或文本加载到DataSet。

    2.属性和方法

    2.1属性

    CaseSensitive 获取或设置一个值,该值指示 DataTable 对象中的字符串比较是否区分大小写。
    Container 获取组件的容器。
    DataSetName 获取或设置当前DataSet的名称
    HasErrors 获取一个值,指示在此DataTable 中的任何 DataSet 对象中是否存在错误
    Tables  获取包含在DataSet 中的表的集合

     

     

    2.2方法

    Clear()

    通过移除所有表中的所有行来清除任何数据的 DataSet。

    Clone()

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

    Copy()

    复制该 DataSet 的结构和数据。

    CreateDataReader()

    为每个 DataTableReader 返回带有一个结果集的 DataTable,顺序与 Tables 集合中表的显示顺序相同。

    CreateDataReader(DataTable[])

    为每个 DataTableReader返回带有一个结果集的 DataTable。

    Dispose()

    释放由 MarshalByValueComponent使用的所有资源。

    Equals(Object)

    确定指定的对象是否等于当前对象。

    GetChanges()

    获取 DataSet 的副本,该副本包含自加载以来或自上次调用 AcceptChanges() 以来对该数据集进行的所有更改。

    GetChanges(DataRowState)

    获取由 DataRowState 筛选的 DataSet 的副本,该副本包含上次加载以来或调用 AcceptChanges() 以来进行的所有更改。

    GetType()

    获取当前实例的 Type。

    HasChanges()

    获取一个值,该值指示 DataSet 是否有更改,包括新增行、已删除的行或已修改的行。

    Haschanges(DataRowState)

    获取一个值,该值指示 DataSet 是否有 DataRowState 被筛选的更改,包括新增行、已删除的行或已修改的行。

    Reset()

    清除所有表并从 DataSet 中删除所有关系、外部约束和表。 子类应重写 Reset(),以便将 DataSet还原到其原始状态。

    ToString()

    返回包含 Component 的名称的 String(如果有)。 不应重写此方法。

     

     

     

     

     

     

     

     

     

     

     三.示例代码和效果截图

    示例代码

     1.DataAdapter填充DataSet的过程分为二步:首先通过DataAdapter的SelectCommand属性从数据库中检索出需要的数据。SelectCommand其实是一个Command对象。然后再通过DataAdapter的Fill方法把检索来的数据填充 DataSet。

    1 SqlConnection sqlConnection1 = new SqlConnection ( "Data Source=localhost;IntegratedSecurity=SSPI
    2 ;InitialCatalog=Northwind" ) ;
    3 SqlCommand selectCMD = new SqlCommand ( "SELECT CustomerID , CompanyName FROM Customers" , sqlConnection1 ) ;
    4 SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter ( ) ;
    5 custDA.SelectCommand = selectCMD ;
    6 sqlConnection.Open ( ) ;
    7 DataSet dsDataSet1 = new DataSet ( ) ;
    8 sqlDataAdapter1.Fill ( dsDataSet1 , "Customers" ) ;
    9 sqlConnection.Close ( ) ;

    2.DataAdapter是通过其Update方法实现以DataSet中数据来更新数据库的。当DataSet实例中包含数据发生更改后,此时调用Update方法,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT、UPDATE 或 DELETE),并以此命令来更新数据库中的数据。

    1 SqlCommandBuilder sqlCommandBuilder1 = new SqlCommandBuilder ( sqlDataAdapter1 ) ;
    2 dsDataSet1.Tables["Customers"].Rows[0].Delete ( ) ;
    3 sqlDataAdapter1.Update ( dsDataSet1 ,"Customers" ) ;
    4 dsDataSet1.Tables["Customers"].AcceptChanges ( ) ;
    1 DataSetds = new DataSet();
    2 DataTabletbl = new DataTable("Customers");
    3 ds.Tables.Add(tbl);
    4 DataSetds = new DataSet();
    5 DataTabletbl = ds.Tables.Add("Customers");

    效果截图

     SqlConnection sqlConnection = new SqlConnection();
                sqlConnection.ConnectionString =
                    "Server=(local);Database=MyHospital;Integrated Security=sspi";
        
                SqlCommand sqlCommand = new SqlCommand();
                sqlCommand.Connection = sqlConnection;
                sqlCommand.CommandText =                                                                  
                    "SELECT Lyl*IndPrice AS Useprice FROM medicineBuy where CONVERT(varchar(10),datepart(yy,Lydate))+'年'+ CONVERT(varchar(10),datepart(mm,Lydate))+'月'=CONVERT(VARCHAR(30),@date);"                                                              //该命令分别查询所有院系、专业、班级,查询结果将返回多张表;
                    + "SELECT Num*IndPrice AS TotalInprice FROM orders where CONVERT(varchar(10),datepart(yy,OrderDate))+'年'+ CONVERT(varchar(10),datepart(mm,OrderDate))+'月'=CONVERT(VARCHAR(30),@date) AND State=1;"
                    + "SELECT Num*IndPrice AS cancal FROM orders where CONVERT(varchar(10),datepart(yy,OrderDate))+'年'+ CONVERT(varchar(10),datepart(mm,OrderDate))+'月'=CONVERT(VARCHAR(30),@date) AND State=1 AND cancel=1;";
                sqlCommand.Parameters.AddWithValue("@date", this.cmb_date.Text.ToString());
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                        
                sqlDataAdapter.SelectCommand = sqlCommand;                                                     
                DataSet dataSet = new DataSet();                                                        
                sqlConnection.Open();                                                                         
                sqlDataAdapter.Fill(dataSet);                                                               
                sqlConnection.Close();                                                                       
                DataTable UsepriceTable = dataSet.Tables[0];                                                  
                DataTable TotalInpriceTable = dataSet.Tables[1];                                                       
                DataTable cancalTable = dataSet.Tables[2];
                this.Monthbuy.Text = UsepriceTable.Compute("SUM(Useprice)", "").ToString();
                this.MonthInput.Text = TotalInpriceTable.Compute("SUM(TotalInprice)", "").ToString();
                this.MonthCancel.Text = cancalTable.Compute("SUM(cancal)", "").ToString();
  • 相关阅读:
    常见的设计模式:单例模式、工厂模式、观察者模式、装饰模式与适配器模式
    WCF、Web API、WCF REST、Web Service之区别
    Asp.Net Web API VS Asp.Net MVC
    sql server 2008 评估期已过期解决办法
    IIS6.0中布署MVC站点
    SQL Server类型与C#类型对应关系
    经纬度 lbs 笔记
    C#实现用Newtonsoft.Json 4.5.11解析人人网院校信息并获取院系信息
    当前上下文中不存在名称"Session"
    [ASP.NET]HttpCookieCollection to CookieCollection的最简单方法
  • 原文地址:https://www.cnblogs.com/lidie-/p/9948774.html
Copyright © 2020-2023  润新知