




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第24章 操作数据库,在C#程序开发中,数据库是很重要的一部分。使用数据库,可以存放大量的数据。.NET Framework提供的一个重要的功能是.NET数据访问,它由ADO.NET实现。通过ADO.NET的使用,开发人员可以轻松访问SQL Server、Oracle等数据源,并检索、操作这些数据源中的数据。本章主要给大家详细讲解.NET Framework中的.NET数据访问。,24.1 什么是ADO.NET,ADO.NET是一组向.NET程序员公开数据访问服务的类。它提供了对关系数据、XML和应用程序数据的访问。数据客户端应用程序可以使用ADO.NET来连接到这些数据源,并查询、添加、删除和更新所包含的数据。因此,ADO.NET是.NET Framework中不可或缺的一部分。本节我们来认识ADO.NET。,24.1.1 ADO.NET组成结构,ADO.NET是.NET Framework的一部分,它包括两大组件:.NET Framework数据提供程序和DataSet(数据集)。对于这两大组件的详细描述如下所示。 1.NET Framework数据提供程序 .NET Framework数据提供程序是指处理数据的应用程序。.NET Framework中包括四个数据提供程序,具体如下所示。 SQL Server .NET Framework数据提供程序,为SQL Server数据库提供服务。 OLE DB .NET Framework数据提供程序,为以OLE DB方式连接的数据源提供服务。,ODBC .NET Framework数据提供程序,为ODBC数据源提供服务。 Oracle .NET Framework数据提供程序,为Oracle数据库提供服务。 注意:本章节只介绍用于SQL Server数据库的SQL Server .NET Framework数据提供程序,其他.NET Framework数据提供程序不做详细介绍。,.NET Framework数据提供程序包括Connection、Command、DataReader、DataAdapter等连接对象,即这些对象必须在保持连接数据库或数据源的状态时有效。其中,Connection对象提供与数据库或数据源的连接。Command对象执行对数据库或数据源的操作或命令,如检索、插入、更新、删除等。DataReader对象可以高性能地从数据库或数据源中在保存连接时读取数据。DataAdapter对象是一种数据适配器,它为连接DataSet对象和数据源提供了桥梁。,2DataSet(数据集) DataSet是ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet由一组DataTable对象组成。DataSet能够提供断开式的数据访问和操作,它可以被看作是数据源的数据在内存中的副本。通过DataSet对象,可以检索或更新这些数据,同时保持该副本和数据源一致。,24.1.2 ADO.NET基本对象,ADO.NET是一组向.NET程序员公开数据访问服务的类。该类有很多的对象,主要有Connection、Command、DataReader、DataAdapter、DataSet、DataView等。下面我们来介绍用于操作SQL Server数据库的Connection、Command、DataReader、DataAdapter、DataSet、DataView等对象。 1SqlConnection对象 SqlConnection对象用来连接数据库,它表示ADO.NET与SQL Server数据库的唯一的会话。使用SqlConnection对象连接SQL Server数据库的步骤如下所示。,(1)创建连接字符串。连接SQL Server数据库的字符串一般由多个“名称/值”对(“名称”表示连接字符串的属性、“值”表示该属性的值)组合而成,常用属性如下表所示。,【示例24-1】下面创建一个连接字符串“data source=(local);uid=sa;pwd=123456;database= Data24”,并保存为connectionString变量。 string connectionString = “data source=(local);user id=sa;pwd=123456; database=Data24;“; 分析:上述连接字符串包括4个“名称/值”对,用来连接Data24数据库。其中,data source属性指定数据库所在的服务器的名称(“(local)”表示本机);uid和pwd属性分别指定用户名和密码;database属性指定被连接的数据库的名称。,【示例24-2】下面创建一个连接字符串“Data Source=(local);Initial Catalog=FirstSQLServer DB;Integrated Security=True”,并保存为connectionString变量。 string connectionString = “Data Source=(local);Initial Catalog=Data24; Integrated Security=True“; 分析:上述连接字符串不包括用户名和密码,是一种信任连接的连接字符串。“Integrated Security=True”属性指定使用信任连接方式,Initial Catalog属性指定被连接的数据库的名称。,(2)创建SqlConnection类的实例。 【示例24-3】下面创建一个名称为con的SqlConnection类的实例,并指定该对象使用connec tionString变量的值作为的连接字符串。 SqlConnection con = new SqlConnection(); /创建SqlConnection类的实例 /设置con实例的连接字符串为connectionString con.ConnectionString = connectionString;,(3)打开数据库的连接,即建立ADO.NET与数据库的会话。 【示例24-4】下面在try语句的try块中调用con实例的Open()方法打开数据库的连接。如果连接数据库失败,将在catch块中显示异常信息。 try con.Open(); /其他操作 catch(Exception ex) Console.WriteLine(ex.Message); /如果连接数据库失败,则显示错误信息 ,(4)关闭数据库的连接。 【示例24-5】下面在try语句的finally块中调用con实例的Close()方法关闭数据库的连接,并释放该连接占用的资源。 finally if(con != null) con.Close(); /关闭数据库的连接 ,2SqlCommand对象 SqlCommand对象用来执行对数据库的操作,它能够执行指定的SQL语句或存储过程。SqlCommand对象提供了用来执行SQL语句或存储过程的方法,具体如下所示。 ExecuteReader()方法:读取数据,并返回SqlDataReader对象。 ExecuteNonQuery()方法:执行指定的SQL语句或存储过程,并返回该操作影响的行数。 ExecuteXmlReader()方法:读取数据,并返回XmlReader对象。 ExecuteScalar()方法:读取数据,并返回结果集合中的第一行第一列的值。,【示例24-6】下面cmd实例调用ExecuteReader()方法执行它的SQL语句或存储过程,返回结果保存为dr对象(类型为SqlDataReader)。 SlqDataReader dr = cmd.ExecuteReader(); /cmd为SqlCommand类的实例 【示例24-7】下面cmd实例调用ExecuteNonQuery()方法执行它的SQL语句或存储过程,返回结果保存为result变量(类型为int)。 int result = cmd.ExecuteNonQuery(); /cmd为SqlCommand类的实例,【示例24-8】下面cmd实例调用ExecuteScalar()方法执行它的SQL语句或存储过程,返回结果保存为result变量(类型为object)。 object result = cmd.ExecuteScalar(); /cmd为SqlCommand类的实例 SqlCommand对象的CommandText属性指定其执行的SQL语句或存储过程的名称。CommandType属性指定其是执行SQL语句还是存储过程。它的值由CommandType枚举指定,包括以下3个值。 Text:将CommandText属性的值解释为SQL语句,并以文本方式执行。 StoredProcedure:将CommandText属性的值解释为存储过程的名称,并以存储过程方式执行。 TableDirect(很少用):将CommandText属性的值解释为表的名称,即直接操作指定的表。,【示例24-9】下面设置cmd实例所执行的SQL语句为“select * from Data”。 cmd.CommandText = “select * from Data“; /cmd为SqlCommand类的实例 分析:上述SQL语句查询Data表中的所有记录。 【示例24-10】下面首先设置cmd实例所执行的存储过程的名称为Pr_GetDatas,然后设置CommandType属性的值为CommandType.StoredProcedure,即执行方式为存储过程。 cmd.CommandText = “Pr_GetDatas“; /cmd为SqlCommand类的实例 cmd.CommandType= CommandType.StoredProcedure; /设置执行方式为存储过程,3SqlDataReader对象 SqlDataReader对象用于提供从SQL Server数据库中快速读取数据的方法,且在读取数据时必须保持与数据库的连接。该对象有三个特征,具体说明如下所示。 只能读取数据:不能对数据库执行任何更新、修改或插入操作。 只能向前读取数据:即不能再次读取已经被访问的数据。 直接把数据传递到对象,Windows Form控件或者Web窗体页。 SqlDataReader类的Read()方法可以定位到下一条记录,NextResult()方法可以定位到下一个记录集。,【示例24-11】下面在if语句中使用Read()方法读取dr实例的第一条记录的值。如果记录存在,则读取该记录的ID列的值,并保存为idValue变量。 if(dr.Read() /dr为SqlDataReader类的实例 string idValue = dr“ID“.ToString(); ,【示例24-12】下面在while语句中使用Read()方法读取dr实例的所有记录的值,并将每一条记录的ID列的值都保存为idValue变量。 while(dr.Read() /dr为SqlDataReader类的实例 string idValue = dr“ID“.ToString(); 注意:使用SqlDataReader对象读取数据完成之后,务必要关闭(调用Close()方法)SqlDataReader对象。否则,该对象将一直处于打开状态,并一直占用系统的资源。,4DataSet对象 DataSet对象用于提供断开式的数据访问机制,它是数据在内存中的一种表现形式。该对象被看作是数据在内存中的副本。 DataSet对象包括一个或多个表(DataTable),以及表之间的关系(DataRelation)、约束(Constraint)、外键约束(ForeignKeyConstraint)、唯一约束(UniqueKeyConstraint)等。DataSet对象共包括以下7种对象,具体说明如下所示。 DataTable:表示表,由行、列组成的数据集合。 DataRow:表示行,由单行数据组成的数据集合。,DataColumn:表示列,约束行对象中存储的数据。 DataRelation:表示关系,描述表之间的关系。 Constraint:表示约束,表中数据所满足的约束条件。 ForeignKeyConstraint:表示外键约束,外键关系的列所满足的约束条件。 UniqueKeyConstraint:表示唯一约束,表中的数据所满足的唯一约束。,5SqlDataAdapter对象 SqlDataAdapter表示用于填充DataSet和更新SQL Server数据库的一组数据命令和一个数据库连接。它是DataSet和SQL Server之间的桥接器,用于检索和保存数据。它提供了四种命令,具体说明如下所示。 SelectCommand:用于检索(查询)数据。 InsertCommand:用于插入数据。 UpdateCommand:用于修改数据。 DeleteCommand:用于删除数据。,SqlDataAdapter对象最常用的方法就是用于填充DataSet对象,该功能由其Fill()方法实现,一般需要以下6个步骤。 (1)创建连接字符串。 【示例24-13】下面创建一个连接字符串“data source=(local);uid=sa;pwd=123456; database= Data24”,并保存为connectionString变量。 string connectionString = “data source=(local);user id=sa;pwd=123456;data base=Data24;“; (2)创建SqlConnection类的实例。 【示例24-14】下面创建一个名称为con的SqlConnection类的实例,并指定该实例使用connectionString变量的值作为的连接字符串。 SqlConnection con = new SqlConnection(); /创建SqlConnection类的实例 /设置con实例的连接字符串为connectionString con.ConnectionString = connectionString;,(3)创建查询数据的SQL语句或存储过程。 【示例24-15】下面创建查询Data表的SQL语句“select * from Data”,并保存为cmdText变量。 string cmdText = “select * from Data“; (4)创建SqlDataAdapter类的实例。 【示例24-16】下面创建一个名称为cmd的SqlDataAdapter类的实例。该实例的SQL语句为cmd Text变量的值,连接对象为con实例。 SqlDataAdapter da = new SqlDataAdapter(cmdText,con); /创建SqlData Adapter 类的实例cmd,(5)打开数据库的连接,获取数据并填充到数据集。 【示例24-17】下面调用con实例的Open()方法打开数据库的连接,并调用da实例的Fill()方法将获取的数据填充到DataSet对象ds。 DataSet ds = new DataSet(); /创建DataSet对象ds con.Open(); /打开数据库的连接 da.Fill(ds); /获取数据,并填充DataSet对象ds (6)关闭数据库的连接。 【示例24-18】下面调用con实例的Close()方法关闭数据库的连接,并释放该连接占用的 资源。 con.Close(); /关闭数据库的连接,24.2 操作SQL Server数据库,使用ADO.NET可以连接数据库,并查询、添加、删除和更新该数据库所包含的数据。本节我们以SQL Server数据库为例,给大家讲解连接数据库、读取数据、插入数据、修改数据、删除数据和使用DataGirdView控件、ListView控件、TreeView控件显示数据的方法。,24.2.1 创建Chapter24窗体应用程序,在本例中,我们首先创建一个名为Chapter24的窗体应用程序。 【实例24-1】 创建了名称为“Chapter24”的Windows Form应用程序,具体步骤如下。 (1)在Visual Studio 2010集成开发环境中,创建名称为Chapter24的Windows Form应用程序。 (2)右击“解决资源方案管理器”面板中的Form1.cs节点,并选择“重命名”命令,将Form1.cs重命名为MainForm.cs。 (3)双击MainForm.cs节点,打开MainForm窗体的编辑界面,并设计该窗体,具体细节如下所示。,设置窗体的标题为“C# 4.0Chapter24”。 添加6个按钮(Button)控件:“连接数据库”按钮、“读取数据”按钮、“插入数据”按钮、“修改数据”按钮、“删除数据”按钮和“显示数据”按钮。 添加RichTextBox控件,它的Name属性的值为rtbMessage。 添加DataGridView控件,它的Name属性的值为dgvData。 添加ListView控件,它的Name属性的值为lvData。 添加TreeView控件,它的Name属性的值为tvData。,24.2.2 创建Data24数据库,Chapter24 Windows Form应用程序连接了名称为Data24的SQL Server 2012数据库,并操作了该数据库中的数据。创建Data24数据库及其表的具体步骤如下: (1)打开SQL Server 2012数据库的SQL Server Management Studio窗体。 (2)在“对象资源管理器”面板中,右击“数据库”节点,并选择“新建数据库”命令。,(3)单击“新建数据库”命令,打开“新建数据库”对话框,并在“数据库名称”文本框中输入Data24。单击“确定”按钮,即可创建Data24数据库。 (4)创建Data24数据库之后,就可以在“对象资源管理器”面板中找到Data24节点。展开Data24,右击“表”节点,并选择“新建表”命令。 (5)单击“新建表”命令,打开“表-dbo.Table1”选项卡。在该选项卡中创建名称为Data的表,该表包含4个列:ID、Name、Value和ShowOrder。,24.2.3 连接数据库,连接数据库是指将C#程序Chapter24与数据库Data24连接起来。在Chapter24应用程序中,单击MainForm窗体的“连接数据库”按钮,即可连接数据库Data24。该功能由“连接数据库”按钮的Click事件实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd=123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。 (3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。,(4)在try语句中,调用con实例的Open()方法打开数据库的连接,即连接Data24数据库。如果连接成功,则在rtbMessage控件中显示连接Data24数据库成功的信息。如果连接失败,则在catch块中显示失败的信息。 (5)在finally块中,调用con实例的Close()方法关闭已打开的数据库连接。 运行Chapter24 Windows Form应用程序,并在“C# 4.0Chapter24”窗体中单击“连接数据库”按钮。,24.2.4 读取数据,读取数据是指读取数据库Data24的Data表中的所有数据,并显示在rtbMessage控件中。在Chapter24应用程序中,单击MainForm窗体的“读取数据”按钮,即可读取数据库指定位置的数据。该功能由“读取数据”按钮的Click事件实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd=123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。,(3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。 (4)设置查询Data表中的数据的SQL语句“select * from Data”,并保存为cmdText变量。 (5)创建执行SQL语句的命令cmd,它使用了cmdText和con变量。 (6)在try语句中,调用con实例的Open()方法打开数据库的连接(即连接Data24数据库),并执行以下操作。,调用cmd实例的ExecuteReader()方法读取数据,保存为dr对象。 设置rtbMessage控件的Text属性的初始值。 使用while语句读取dr对象中的每一行数据,并追加到rtbMessage控件的Text属性。 关闭dr对象。 如果上述操作成功,则在rtbMessage控件中显示连接Data24数据库的Data表中的所有数据。如果失败,则在catch块中显示失败的信息。 (7)在finally块中,调用con实例的Close()方法关闭已打开的数据库连接。 运行Chapter24 Windows Form应用程序,并在“C# 4.0Chapter24”窗体中单击“读取数据”按钮。,24.2.5 插入数据,插入数据是指向数据库Data24的Data表中插入新的数据。在Chapter24应用程序中,单击MainForm窗体的“插入数据”按钮,即可向Data24数据库的Data表中插入数据。该功能由“插入数据”按钮的Click事件实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd= 123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。 (3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。,(4)设置向Data表中插入数据的SQL语句“INSERT Data (ID,Name,Value,ShowOrder) VALUES(“+ count+ “,Name“ + count.ToString()+ “,Value“ + count.ToString()+ “,“ + count.ToString() + “)“;”,并保存为cmdText变量。 (5)创建执行SQL语句的命令cmd,它使用了cmdText和con变量。 (6)在try语句中,调用con实例的Open()方法打开数据库的连接(即连接Data24数据库),并执行以下操作。,调用cmd实例的ExecuteNonQuery()方法执行上述SQL语句,并插入新数据到Data表中。新插入的数据的Name列的值为Name字符串和count变量的值组成,Value列的值为Value字符串和count变量的值组成,ShowOrder列的值为count变量的值。 注意:count变量为静态变量,它的初始值为1。每增加一个新数据之后,它的值加1。 count变量的值增1。 如果上述操作失败,则在catch块中显示失败的信息。 (7)在finally块中,调用con实例的Close()方法关闭已打开的数据库连接。 运行Chapter24 Windows Form应用程序。在“C# 4.0Chapter24”窗体中,首先单击“插入数据”按钮。然后单击“读取数据”按钮显示Data表中的数据。,24.2.6 修改数据,修改数据是指修改数据库Data24的Data表的数据。在Chapter24应用程序中,单击MainForm窗体的“修改数据”按钮,即可修改Data24数据库的Data表中的数据。该功能由“修改数据”按钮的Click事件实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd= 123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。,(3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。 (4)设置修改Data表中数据的SQL语句“UPDATE Data SET “ + “Name = jam,“+ “Value = 8“+ “WHERE Name =Name3“”,并保存为cmdText变量。 (5)创建执行SQL语句的命令cmd,它使用了cmdText和con变量。 (6)在try语句中,调用con实例的Open()方法打开数据库的连接(即连接Data24数据库),并调用cmd实例的ExecuteNonQuery()方法执行上述SQL语句,并修改Data表中的数据。上述SQL语句执行以下修改操作。,找到Name列的值等于Name3字符串的记录。 将上述找到的记录Name列的值修改为jam。 将上述找到的记录Value列的值修改为8。 将上述找到的记录ShowOrder列的值修改为空。 如果上述操作失败,则在catch块中显示失败的信息。 (7)在finally块中,调用con实例的Close()方法关闭已打开的数据库连接。 运行Chapter24 Windows Form应用程序。在“C# 4.0Chapter24”窗体中,首先单击“修改数据”按钮。然后单击“读取数据”按钮显示Data表中的数据。,24.2.7 删除数据,删除数据是指删除指定的数据库Data24的Data表中的数据。在Chapter24应用程序中,单击MainForm窗体的“删除数据”按钮,即可删除指定的Data24数据库的Data表中的数据。该功能由“删除数据”按钮的Click事件实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd= 123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。 (3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。,(4)设置删除Data表中的数据的SQL语句“DELETE Data “+ “WHERE Name = mary“;”,并保存为cmdText变量。 (5)创建执行SQL语句的命令cmd,它使用了cmdText和con变量。 (6)在try语句中,调用con实例的Open()方法打开数据库的连接(即连接Data24数据库),并调用cmd实例的ExecuteNonQuery()方法执行上述SQL语句,并删除Data表中的数据。上述SQL语句删除Data表中的Name列的值为mary的记录。如果上述操作失败,则在catch块中显示失败的信息。 (7)在finally块中,调用con实例的Close()方法关闭已打开的数据库连接。 运行Chapter24 Windows Form应用程序。在“C# 4.0Chapter24”窗体中,首先单击“删除数据”按钮。然后单击“读取数据”按钮显示Data表中的数据。,24.2.8 使用DataGridView控件显示数据,DataGridView控件可用来显示数据。在Chapter24应用程序中,使用DataGridView控件显示Data24数据库的Data表中的数据。该功能由ShowDataWithDataGirdView()方法实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd= 123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。 (3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。,(4)设置查询Data表中的数据的SQL语句“select * from Data”,并保存为cmdText变量。 (5)创建执行SQL语句的数据适配器da,它使用了cmdText和con变量。 (6)创建DataSet对象ds。 (7)在try语句中,调用con实例的Open()方法打开数据库的连接(即连接Data24数据库),并调用da实例的Fill()方法填充ds对象。如果失败,则在catch块中显示失败的信息。 (8)在finally块中,调用con实例的Close()方法关闭已打开的数据库连接。 (9)设置dgvData控件的DataSource属性的值为ds.Tables0.DefaultView,即使用DataGridView控件显示ds对象中的数据。,24.2.9 使用ListView控件显示数据,ListView控件可用来显示数据。在Chapter24应用程序中,使用ListView控件显示Data24数据库的Data表中的数据。该功能由ShowDataWithListView()方法实现,具体步骤如下所示。 (1)设置连接Data24数据库的连接字符串“data source=localhost;user id=sa;pwd= 123456; database=Data24;”,并保存为connectionString变量。 (2)创建SqlConnection类的实例con,它将用于连接Data24数据库。 (3)设置con实例的ConnectionString属性的值为connectionString变量,即设置该连接的连接字符串。 (4)设置查询Data表中的数据的SQL语句“select * from Data”,并保存为cmdText 变量。 (5)创建执行SQL语句的数据适配器da,它使用了cmdText和con变量。,(6)创建DataSet对象ds。 (7)在try语句中,调用con实例的Open()方法打开数据库的连接(即连接Data24数据库),并调用da实例的Fill()方法填充ds对象。如果失败,则在catch块中显示失败的信息。 (8)在finally块中,调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融行业演讲培训
- 福建省建瓯市芝华中学2026届化学九上期中学业质量监测试题含解析
- 校本培训特色亮点
- 2026届云南省昆明市石林县英语九年级第一学期期末经典模拟试题含解析
- 如何管理好案场
- 2026届南京市秦淮区四校化学九上期末联考模拟试题含解析
- 2025-2026学年统编版(2024)小学语文二年级上册(全册)每课知识点归纳
- 2026届江苏省镇江市润州区化学九上期中联考试题含解析
- 延庆区2025年度医师资格考试现场审核通知
- 2025年烧伤整形美容外科实习生出科考试试题及答案
- 2025年职业技能大赛(电工赛项)理论考试指导题库500题(含答案)
- 眼科进修汇报
- TCANSI 133-2024 液化天然气(LNG)燃料动力船舶槽车气试加注作业安全要求
- 力学篇01秒解动态平衡-高考物理答题技巧与模型
- 2025新高考数学核心母题400道(学生版)
- 项目管理技能与经验分享
- 逆向设计单元整体教学
- 烟草证委托经营管理协议书
- 混砂机安全操作规程(2篇)
- 一口气看遍中国的地理之美中国地理介绍P
- 营销策划 -极氪汽车2024应标方案【新能源汽车】
评论
0/150
提交评论