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();

 

转载于:https://www.cnblogs.com/lidie-/p/9948774.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值