




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、uADO.NET基础基础 u基本基本ADO.NET类类u数据绑定数据绑定数据访问数据访问数据访问(1)数据访问就是对数据库中的数据进行数据访问就是对数据库中的数据进行CRUD操作:操作:Create(创建)、(创建)、Retrieve(检索)、(检索)、Update(更新)和(更新)和Delete(删除)。(删除)。主流的数据访问技术根据开发平台的不同主要分为两个体系:微主流的数据访问技术根据开发平台的不同主要分为两个体系:微软体系和软体系和Java体系。体系。微软体系微软体系ODBC(Open Database Connectivity):开放数据库互联):开放数据库互联DAO(Data A
2、ccess Objects):数据访问对象):数据访问对象RDO(Remote Data Object):远程数据对象):远程数据对象OLE DB(Object Linking and Embedding data base):对象链接和嵌入数据库):对象链接和嵌入数据库ADO(ActiveX Data Objects): 是一个用于存取数据源的是一个用于存取数据源的COM组件组件ADO.NET:微软在:微软在.NET框架中提出的全新的数据访问模型框架中提出的全新的数据访问模型LINQ to SQL和和ADO.NET EF(Entity Framework):微软下一代基于):微软下一代基于A
3、DO.NET之之上构建的类似上构建的类似ORM技术的高层数据访问技术技术的高层数据访问技术数据访问数据访问(2)Java体系体系JDBC(Java Database Connectivity):):Java数据库连接数据库连接Hibernate:一个开源的数据访问:一个开源的数据访问ORM中间件中间件JDO:Java数据对象数据对象(JDO)是一个存储是一个存储Java对象的规范对象的规范ADO与与ADO.NET(ActiveX Data Objects)重点比较一下重点比较一下ADO和和ADO.NET:ADO以以Recordset存储,而存储,而ADO.NET则以则以DataSet表示。表示
4、。Recordset看起来更像单张数据表;而看起来更像单张数据表;而DataSet可以是多个表可以是多个表的集合。的集合。ADO的运作是在线方式,即不论是浏览还是更新数据都必须的运作是在线方式,即不论是浏览还是更新数据都必须是实时的;而是实时的;而ADO.NET则使用离线方式,在访问数据的时候则使用离线方式,在访问数据的时候ADO.NET会导入并以会导入并以XML格式维护数据的一份副本,格式维护数据的一份副本,ADO.NET的数据库连接也只有在这段时间需要在线。的数据库连接也只有在这段时间需要在线。此外,由于此外,由于ADO使用使用COM技术,这就要求所使用的数据类技术,这就要求所使用的数据类
5、型必须符合型必须符合COM规范,而规范,而ADO.NET基于基于XML格式,数据类型格式,数据类型更为丰富并且不需要再做更为丰富并且不需要再做COM编排导致的数据类型转换,从编排导致的数据类型转换,从而提高了整体性能。而提高了整体性能。 ADO.NET基础基础Microsoft在开始设计在开始设计.NET框架时,对于数据访问的技术,没框架时,对于数据访问的技术,没有进一步扩展有进一步扩展ADO,而是设计了一个新的数据访问框架,而是设计了一个新的数据访问框架ADO.NET,只是保留了,只是保留了ADO这个缩写词。这个缩写词。ADO.NET相对相对ADO来说,具有如下来说,具有如下3个方面的优点:
6、个方面的优点:(1)提供了断开的数据访问模型,这对)提供了断开的数据访问模型,这对Web环境至关重要。环境至关重要。(2)提供了与)提供了与XML的紧密集成。的紧密集成。(3)提供了与)提供了与.NET框架的无缝集成(例如,兼容基类库类框架的无缝集成(例如,兼容基类库类型系统)。型系统)。ADO.NET的构架的构架ConnectionTransactionCommandParametersDataReaderDataAdapterSelectCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollecti
7、onConstraintCollectionDataRelationCollectionInsertCommandUpdataCommandDeleteCommand.NET Framework Data ProviderDatabaseXMLu.NET数据提供程序(数据提供程序(.NET Data Provider)是一组用于访问特定数据库,)是一组用于访问特定数据库,执行执行SQL命令并获取值的命令并获取值的ADO.NET类,是应用程序与数据源之间的一座桥类,是应用程序与数据源之间的一座桥梁。梁。uDataSet代表的是整个数据的集合,代表的是整个数据的集合,包括相关的表、约束和表之间的关
8、系包括相关的表、约束和表之间的关系.NET数据提供程序数据提供程序目前在目前在.NET平台中包含如下平台中包含如下.NET数据提供程序:数据提供程序:SQL Server .NET数据提供程序。数据提供程序。OLE DB .NET数据提供程序。数据提供程序。ODBC .NET数据提供程序。数据提供程序。Oracle .NET数据提供程序(需要数据提供程序(需要Oracle client的支持)。的支持)。SQLite .NET数据提供程序(非官方,由数据提供程序(非官方,由提供)。提供)。PostgreSQL .NET数据提供程序(非官方,由数据提供程序(非官方,由/
9、projects/npgsql提供)。提供)。MySQL .NET数据提供程序(非官方,由数据提供程序(非官方,由 提供)。提供)。uADO.NET基础u基本ADO.NET类u数据绑定数据访问基本基本ADO.NET类类ADO.NET有两种类型的对象:基于连接的和基于内容的。有两种类型的对象:基于连接的和基于内容的。基于连接的对象基于连接的对象。它们是数据提供对象,如它们是数据提供对象,如Connection、Command、DataAdapter和和DataReader。它们执行。它们执行SQL语句,连接到数语句,连接到数据库,或者填充据库,或者填充DataSet。基于连接的对象是。基于连接的
10、对象是针对具体数据针对具体数据源类型的源类型的,并且可以在提供程序指定的命名空间中找到。,并且可以在提供程序指定的命名空间中找到。基于内容的对象基于内容的对象。这些对象其实是数据的这些对象其实是数据的“包包”。包括。包括DataSet、DataColumn、DataRow、DataRelation等。它们等。它们完全和数据源独立完全和数据源独立,出现,出现在在System.Data命名空间里。命名空间里。Connection类类Connection类用于和要交互的数据源建立连接。类用于和要交互的数据源建立连接。在执行任何操作前在执行任何操作前(包括读取、删除、新增或者更新数据包括读取、删除、新
11、增或者更新数据)必必须建立连接须建立连接 。需要注意的问题:需要注意的问题:连接字符串连接字符串 测试连接测试连接连接字符串连接字符串创建连接对象时,需要提供连接字符串。创建连接对象时,需要提供连接字符串。 连接字符串包含基本信息:连接字符串包含基本信息:服务器位置服务器位置要使用的数据库名称要使用的数据库名称如何通过数据库验证。提供验证身份或者以当前用户登录。如何通过数据库验证。提供验证身份或者以当前用户登录。web.config文件的文件的结点便于保存连接字符串。结点便于保存连接字符串。如下面这个示例所示:如下面这个示例所示:测试连接测试连接 选定连接字符串后,管理连接就很简单了,只需简单
12、选定连接字符串后,管理连接就很简单了,只需简单地使用地使用Open()方法和方法和Close()方法方法 。/创建创建Connection对象对象string connectionString =ConfigurationManager .ConnectionStrings Northwind.ConnectionString;SqlConnection con = new SqlConnection(connectionString);trycon.Open(); /打开连接打开连接lblInfo.Text = Server Version: + con.ServerVersion;lblI
13、nfo.Text += Connection is: + con.State.Tostring();例子:例子:catch(Exception err)/显示信息来处理错误lblInfo.Text = Error reading the database. + err.Message;finally/不论采用哪种方法都要确保正确关闭连接, /即使连接没有成功打开,调用Close()方法也不会产生错误con.Close();lblInfo.Text += Now Connection Is: + con.State.ToString();Command类类Command类可以执行所有类型的类可以
14、执行所有类型的SQL语句,一般被用来执行数语句,一般被用来执行数据操作任务(如读或更新表中的记录)。据操作任务(如读或更新表中的记录)。Command对象常用的构造函数包括两个重要的参数对象常用的构造函数包括两个重要的参数:一个是要执行的一个是要执行的SQL语句语句另一个是已建立的另一个是已建立的Connection对象对象例如,当使用例如,当使用Microsoft SQL Server编程接口时:编程接口时:SqlCommand cmd = new SqlCommand( SELECT * FROM Employees, con);con表示前面已创建的连接到数据库的表示前面已创建的连接到数
15、据库的Connection对象对象表示要执行的表示要执行的SQL语句语句Command方法方法 方法名方法名描描 述述ExecuteNonQuery()执行非执行非SELECT语句,如插入、删除、更新等语句,如插入、删除、更新等SQL语语句。返回值显示命令影响的行数。句。返回值显示命令影响的行数。ExecuteScalar()执行执行SELECT查询,并返回命令位于结果记录集第一查询,并返回命令位于结果记录集第一行第一列的字段。行第一列的字段。ExecuteReader()执行执行SELECT语句,并返回一个仅向前的、只读的数语句,并返回一个仅向前的、只读的数据集据集DataReader对象,
16、该对象连接到数据库的结对象,该对象连接到数据库的结果集上,并允许行检索。果集上,并允许行检索。DataReader类类 DataReader以仅向前、只读流的方式每次读取一条以仅向前、只读流的方式每次读取一条SELECT命命令返回的记录令返回的记录 ,提供了最快捷且毫无拖沓的数据访问提供了最快捷且毫无拖沓的数据访问 。方法名方法名描描 述述Read()将行游标前进到流的下一行。将行游标前进到流的下一行。GetValue()用于指定列的整数索引,从当前行中以固定格式返回用于指定列的整数索引,从当前行中以固定格式返回1个值个值或多个值或多个值GetValues()将当前行中的值保存到数组中。将当前
17、行中的值保存到数组中。GetInt32()、GetChar()和和GetDateTime()这些方法返回当前行中指定序号的字段值,返回值的类型这些方法返回当前行中指定序号的字段值,返回值的类型和方法名称中的一致和方法名称中的一致NextResult()如果命令返回的如果命令返回的DataReader包含不只一个行集,该方法将包含不只一个行集,该方法将游标移动到下一个行集游标移动到下一个行集Close()关闭关闭Reader。并释放对行集的引用。并释放对行集的引用 DataReader方法方法 DataSet类类 DataSet是非连接数据访问的核心。是非连接数据访问的核心。 到目前为止,前面的
18、示例都使用了到目前为止,前面的示例都使用了ADO.NET基于连接基于连接的特性。的特性。采用这种方式时,只有数据读取后数据才会和数据源断开连采用这种方式时,只有数据读取后数据才会和数据源断开连接。代码需要负责追踪用户活动、保存信息并确定何时创建接。代码需要负责追踪用户活动、保存信息并确定何时创建和执行新的命令。和执行新的命令。ADO.NET通过通过DataSet对象强调了另外一种完全不同的理念。对象强调了另外一种完全不同的理念。连接数据库时,用从数据库中获得的信息的副本来填充连接数据库时,用从数据库中获得的信息的副本来填充DataSet。如果修改了。如果修改了DataSet中的信息,数据库中相
19、应表的中的信息,数据库中相应表的信息并不会随之改变。如果需要的话,还可以重新连接原来信息并不会随之改变。如果需要的话,还可以重新连接原来的数据源,通过一个批操作把的数据源,通过一个批操作把DataSet中数据的修改应用到表中数据的修改应用到表中。中。DataSet与与DataReader 有些时候,有些时候,DataSet比比DataReader更便于使用,包括下面这些更便于使用,包括下面这些情形:情形:需要在大量的数据中前后浏览。需要在大量的数据中前后浏览。需要在不同的表间导航。需要在不同的表间导航。需要通过用户界面控件绑定数据。需要通过用户界面控件绑定数据。需要以需要以XML方式操作数据。
20、方式操作数据。需要通过需要通过Web服务提供批量更新。服务提供批量更新。一般而言,在插入、删除和更新记录时不使用一般而言,在插入、删除和更新记录时不使用DataSet,但是,但是并不能完全避免使用并不能完全避免使用DataSet。由于这些原因,多数由于这些原因,多数Web程序使用程序使用DataSet来检索信息,但使来检索信息,但使用直接的命令执行更新。用直接的命令执行更新。 分解分解DataSet DataTableDataSet关系集合DataRelation表集合DataTable行集合DataRow子关系集合DataRelation列集合DataColumn约束集合Constraint
21、父关系集合DataRelationDefaultView DataSet包含两类最重要的元素:零个或多个表的集合(包含两类最重要的元素:零个或多个表的集合(通过通过Tables属性提供)以及零个或多个关系的集合(通过属性提供)以及零个或多个关系的集合(通过Relation属性提供),关系可以把表连接到一起。属性提供),关系可以把表连接到一起。 DataAdapter类类 DataAdapter是是DataSet中的表和数据源间的桥梁。它含有查询中的表和数据源间的桥梁。它含有查询和更新数据源所需的全部命令。和更新数据源所需的全部命令。它是提供程序相关的对象,因此每一个提供程序都有一个它是提供程序
22、相关的对象,因此每一个提供程序都有一个DataAdapter类(如类(如SqlDataAdapter、OracleDataAdapter等)等) 为了让为了让DataAdapter能够编辑、删除或添加行,需要设定能够编辑、删除或添加行,需要设定DataAdapter对象的对象的InsertCommand、UpdateCommand和和DeleteCommand属性。属性。利用利用DataAdapter填充填充DataSet,必须设定,必须设定SelectCommand。 DataAdapter方法方法 方法名描 述Fill()执行SelectCommand中的查询后向DataSet添加一个Da
23、taTable。如果查询返回多个结果集,该方法将依次添加多个DataTable对象。还可以用该方法向现有的DataTable添加数据FillSchema()执行SelectCommand中的查询,但只获取架构信息,它向DataSet中添加一个DataTable。该方法并不往DataTable中添加任何数据。相反,它只利用列名、数据类型、主键和唯一约束等信息预配置DataTableUpdate()检查DataTable中的所有变化并执行适当的InsertCommand、UpdateCommand和DeleteCommand操作为数据源执行批量更新【例例3-1】填充填充DataSet示例示例 【例
24、例3-2】使用多个表和关系使用多个表和关系 【例例3-3】查找特定的行查找特定的行 uADO.NET基础u基本ADO.NET类u数据绑定数据访问Connection类类 Command类和类和DataReader类类 DataSet类类 DataAdapter类类 数据绑定数据绑定(1)ASP.NET提供了一个丰富全能的数据绑定模型。提供了一个丰富全能的数据绑定模型。数据绑定允许把获得的数据对象绑定到一个或多个数据绑定允许把获得的数据对象绑定到一个或多个Web控件控件上,接着它们将自动显示数据。上,接着它们将自动显示数据。数据绑定的关键特征是它是声明性的而不是编程性的。也就数据绑定的关键特征是
25、它是声明性的而不是编程性的。也就是说,在是说,在ASP.NET中利用数据源控件在页面和数据源间定义一中利用数据源控件在页面和数据源间定义一个声明性的连接,一旦配置好数据源控件,就可以在设计时个声明性的连接,一旦配置好数据源控件,就可以在设计时将它们将它们“勾勾”到到Web控件上,然后控件上,然后ASP.NET将会管理所有的数将会管理所有的数据绑定细节。据绑定细节。配合数据绑定模型,配合数据绑定模型,ASP.NET提供了两组数据感知提供了两组数据感知(data-aware)控件:控件:数据绑定控件数据绑定控件(data-bound control)数据源控件数据源控件(data source c
26、ontrol)数据绑定数据绑定(2)数据绑定控件数据绑定控件(data-bound control)包含了可用于显示和编辑的数据绑定控件,如包含了可用于显示和编辑的数据绑定控件,如GridView、Repeater和新的和新的ListView控件,可分为控件,可分为单值单值数据绑定数据绑定和和重复值绑定重复值绑定。数据源控件数据源控件(data source control)用于从数据源用于从数据源(如数据库或如数据库或XML文件文件)中检索数据,中检索数据,然后将这一数据提供给数据绑定控件。然后将这一数据提供给数据绑定控件。单值数据绑定单值数据绑定(1) ASP.NET中的大部分中的大部分W
27、eb控件(包括控件(包括Textbox、LinkButton、Image以及其他很多控件)都支持单值数据绑定。以及其他很多控件)都支持单值数据绑定。支持单值数据绑定的控件允许使用数据绑定表达式绑定它们的支持单值数据绑定的控件允许使用数据绑定表达式绑定它们的部分属性。部分属性。表达式在页面的表达式在页面的.aspx标记部分输入(不是在后台代码中),并标记部分输入(不是在后台代码中),并由由 分隔符包含。语法:分隔符包含。语法:页面运行时为了计算这样的数据绑定表达式,必须在代码中调页面运行时为了计算这样的数据绑定表达式,必须在代码中调用用Page.DataBind()方法。方法。如下所示:如下所示
28、:protected void Page_Load(object sender, EventArgs e)this.DataBind();单值数据绑定单值数据绑定(2)单值数据绑定的源可以是属性的值、成员变量或函数的返回单值数据绑定的源可以是属性的值、成员变量或函数的返回值。值。它还可以是其他运行时可计算的表达式,如对其他控件属性它还可以是其他运行时可计算的表达式,如对其他控件属性的引用,使用操作符和文本的计算或者其他。例如:的引用,使用操作符和文本的计算或者其他。例如:数据绑定表达式几乎可以放在页面的任何地方,通常在控件数据绑定表达式几乎可以放在页面的任何地方,通常在控件标签中把数据绑定表达
29、式赋给属性。标签中把数据绑定表达式赋给属性。 单值数据绑定单值数据绑定(3)下面是几个使用数据绑定表达式的例子:下面是几个使用数据绑定表达式的例子:/绑定绑定Label的的Text属性属性asp:Label ID=label1 runat=server Text= / /也可以直接将数据绑定表达式放到页面,不绑定到任何属性或特性也可以直接将数据绑定表达式放到页面,不绑定到任何属性或特性/绑定静态绑定静态HTML的的标记的标记的src特性特性img src=上面的例子中表达式引用了上面的例子中表达式引用了FilePath属性、属性、GetFilePath()函数,因此还要函数,因此还要在脚本块或
30、代码隐藏类定义这些项目:在脚本块或代码隐藏类定义这些项目:单值数据绑定单值数据绑定(4)protected string GetFilePath()return apress.gif ;protected string FilePathget return apress.gif ; 重复值绑定重复值绑定 重复值绑定可以一次把整整一个列表的信息绑定到控件上。重复值绑定可以一次把整整一个列表的信息绑定到控件上。ASP.NET带有几个支持重复值绑定的带有几个支持重复值绑定的基本列表控件基本列表控件。所有用所有用标记呈现的控件,包括标记呈现的控件,包括HtmlSelect、ListBox和和DropD
31、ownList控件。控件。CheckBoxList和和RadioButtonList控件,它们的每个子项呈现控件,它们的每个子项呈现为独立的复选框或单选按钮为独立的复选框或单选按钮BulletedList控件,它创建一系列列表或编号。控件,它创建一系列列表或编号。【例例3-4】填充列表框示例填充列表框示例 除了简单的列表控件外,除了简单的列表控件外,ASP.NET还支持重复值绑定的还支持重复值绑定的富数据富数据控件控件。富数据控件拥有同时显示数据项若干属性或字段的能。富数据控件拥有同时显示数据项若干属性或字段的能力,一般基于表或用户定义的模板来布局,而且还支持一些力,一般基于表或用户定义的模板
32、来布局,而且还支持一些更高层次的功能更高层次的功能 。富数据控件富数据控件 GridViewGridView是显示大型表数据的全能网络。支持选择、编辑、排序和是显示大型表数据的全能网络。支持选择、编辑、排序和分页。分页。GridView是重型的是重型的ASP.NET控件,也是控件,也是ASP.NET 1.x中中DataGrid的替的替代品。代品。DetailsViewDetailsView是每次显示一条记录的理想控件,它显示为一个表,每是每次显示一条记录的理想控件,它显示为一个表,每行对应一个字段。行对应一个字段。FormView和和DetailsView类似,每次显示一条记录。与类似,每次显
33、示一条记录。与DetailsView的差别在于的差别在于它是基于模板的,这样它允许在更为灵活的布局中合并字段而不必依赖它是基于模板的,这样它允许在更为灵活的布局中合并字段而不必依赖表格。表格。ListView基于模板的灵活控件,最好地组合了基于模板的灵活控件,最好地组合了GridView、DataList和和Repeater。类似于类似于GridView,它支持数据编辑、删除和分页。像,它支持数据编辑、删除和分页。像DataList那样,支持那样,支持多列和多行布局,而且像多列和多行布局,而且像Repeater那样允许完全控制控件生成的标记。那样允许完全控制控件生成的标记。ListView是是
34、ASP.NET 3.5新增的新增的 数据源控件数据源控件 ASP.NET 2.0在在ADO.NET的数据模型基础上进行了进一步的封的数据模型基础上进行了进一步的封装和抽象,提出了一个新概念装和抽象,提出了一个新概念“数据源控件数据源控件”。数据源控件没有可视的外观,它们充当用户界面和数据库之数据源控件没有可视的外观,它们充当用户界面和数据库之间的桥梁,有大量不同的数据源控件,提供了对不同数据存间的桥梁,有大量不同的数据源控件,提供了对不同数据存储的访问。储的访问。数据源控件可以完成两类任务:数据源控件可以完成两类任务:可以从数据源中读取数据并为关联的控件提供数据可以从数据源中读取数据并为关联的
35、控件提供数据在关联的控件编辑数据后更新数据源在关联的控件编辑数据后更新数据源 数据源控件的类型数据源控件的类型主要有以下几种:主要有以下几种:SqlDataSource。可以连接到任意拥有。可以连接到任意拥有ADO.NET数据提供程序的数数据提供程序的数据源,包括据源,包括SQL Server、Oracle以及以及OLE DB或者或者ODBC数据源。数据源。ObjectDataSource。可以连接到自定义的数据访问对象。大型专。可以连接到自定义的数据访问对象。大型专业业Web应用程序倾向使用此数据源控件。应用程序倾向使用此数据源控件。AccessDataSource。可以连接到。可以连接到Access数据库文件(数据库文件(.mdb)。)。XmlDataSource。可以连接到。可以连接到XML文件。文件。SiteMapDataSource。可以连接到描述站点导航信息的。可以连接到描述站点导航信息的web.sitemap文件。专门用于显示导航数据,它不支持排序、筛文件。专门用于显示导航数据,它不支持排序、筛选、分页、缓存、更新、插入、删除等操作。选、分页、缓存、更新、插入、删除等操作。联合使用数据源和数据绑定控件联合使用数据源和数据绑定控件 用用GridView显示和编辑数据显示和编辑数据 DetailsView控件控件 FormV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆乌鲁木齐市沙依巴克区乌鲁木齐四中2025年高三下学期第二次月考数学试题文试题含解析
- 新乡医学院三全学院《物理化学实验B》2023-2024学年第二学期期末试卷
- 2025至2031年中国碳化硅烧嘴套行业投资前景及策略咨询研究报告
- 兴义民族师范学院《社会统计与spss应用》2023-2024学年第二学期期末试卷
- 广东沧江中学2024届中考数学全真模拟试卷含解析
- 2025项目部管理人员安全培训考试试题(真题汇编)
- 25年公司、项目部、各个班组三级安全培训考试试题含答案(B卷)
- 2025公司厂级员工安全培训考试试题含答案【新】
- 2025年厂里职工安全培训考试试题含完整答案【夺冠系列】
- 2025岗位安全培训考试试题综合卷
- 女青春期教育
- 中国画论知到课后答案智慧树章节测试答案2025年春陕西师范大学
- 易制毒危险化学品管理制度
- DB65T 8020-2024 房屋建筑与市政基础设施工程施工现场从业人员配备标准
- 解锁演出经纪人证考试成功的试题与答案
- 酒店餐饮销售培训
- 情报信息发布规范
- 无卤阻燃剂知识培训课件
- DB42∕T 1496-2019 公路边坡监测技术规程
- 2025贵州省安全员-C证考试(专职安全员)题库及答案
- 2025-2030年中国小麦加工产业运行动态及发展可行性分析报告
评论
0/150
提交评论