




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、情境三:會員登錄、注冊設(shè)計情境三:會員登錄、注冊設(shè)計任務(wù)7:注冊及登錄功能的實現(xiàn)主 講:陳 琴 WEB 應(yīng)應(yīng) 用 開開 發(fā)發(fā)ADO.NETADO.NET兩種數(shù)據(jù)訪問模型兩種數(shù)據(jù)訪問模型1DataSetDataSet對象對象2DataAdapterDataAdapter對象對象3主要內(nèi)容學(xué)習(xí)目標(biāo)知識目標(biāo):知識目標(biāo):了解兩種數(shù)據(jù)訪問模型理解DataAdapter對象 理解DataSet對象能力目標(biāo):能力目標(biāo): 能夠創(chuàng)建并使用DataAdapter對象 能夠創(chuàng)建并使用DataSet對象 能夠使用ADO.NET技術(shù)操作數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)查詢、刪除、插入、更新技術(shù)應(yīng)用的背景 ASP.NET通過ADO.NE
2、T操作數(shù)據(jù)庫,ADO.NET技術(shù)實現(xiàn)數(shù)據(jù)操作和數(shù)據(jù)訪問,實現(xiàn)了前臺與后臺數(shù)據(jù)庫的聯(lián)系,要在頁面上顯示或操作后臺數(shù)據(jù)庫中的數(shù)據(jù),就需要使用ADO.NET技術(shù)實現(xiàn)數(shù)據(jù)的訪問。 任務(wù)描述:設(shè)計注冊頁面,并實現(xiàn)注冊功能一、任務(wù)七 注冊功能的實現(xiàn) 二、基本知識及技能ADO.NET兩種數(shù)據(jù)訪問模型 1.ADO.NET兩種數(shù)據(jù)訪問模型連接的模型。本模型使用戶能使用數(shù)據(jù)提供程序連接到數(shù)據(jù)庫并對數(shù)據(jù)庫運(yùn)行SQL命令,命令運(yùn)行結(jié)束后將關(guān)閉和數(shù)據(jù)庫之間的連接。斷開連接的模型。本模型使得可以為來自數(shù)據(jù)源的數(shù)據(jù)創(chuàng)建內(nèi)存中的緩存,然后與數(shù)據(jù)源之間斷開連接。 2.ADO.NET 斷開連接的模型(圖)在在ADO.NET中,中
3、,DataSet是數(shù)據(jù)在內(nèi)存中的表示形式,是數(shù)據(jù)在內(nèi)存中的表示形式,它提供了獨立于數(shù)據(jù)源的關(guān)系編程模型。它提供了獨立于數(shù)據(jù)源的關(guān)系編程模型。數(shù)據(jù)庫與數(shù)據(jù)集數(shù)據(jù)庫與數(shù)據(jù)集之間起橋梁作用之間起橋梁作用二、基本知識及技能ADO.NET兩種數(shù)據(jù)訪問模型1.DataSet描述(1 1)傳統(tǒng)的傳統(tǒng)的ADOADO技術(shù)技術(shù):應(yīng)用程序直接訪問數(shù)據(jù)庫,:應(yīng)用程序直接訪問數(shù)據(jù)庫,WebWeb環(huán)境環(huán)境下多個終端同時訪問數(shù)據(jù)庫會造成數(shù)據(jù)競爭。下多個終端同時訪問數(shù)據(jù)庫會造成數(shù)據(jù)競爭。(2 2)ADO.NETADO.NET技術(shù)技術(shù):通過:通過DataSetDataSet訪問數(shù)據(jù)庫。訪問數(shù)據(jù)庫。DB應(yīng)用應(yīng)用程序程序DataS
4、et二、基本知識及技能DataSetDataSet數(shù)據(jù)集數(shù)據(jù)集DataTableCollection2. DataSet的組成DataTableColumnsData ColumnRowsData RowConstraintsConstraintDataRelationCollectionDataRelation二、基本知識及技能DataSet3.創(chuàng)建DataSet數(shù)據(jù)集 語法格式: DataSet ds=new DataSet();DataSet ds=new DataSet();舉例:舉例:protected void Page_Load(object sender, EventArgs
5、e) DataSet ds1 = new DataSet(); Response.Write(ds1.DataSetName + ); DataSet ds2 = new DataSet(myDataSet); Response.Write(ds2.DataSetName + );二、基本知識及技能DataSet4. DataSet中添加DataTableprotected void Page_Load(object sender, EventArgs e)protected void Page_Load(object sender, EventArgs e) / / 創(chuàng)建數(shù)據(jù)集創(chuàng)建數(shù)據(jù)集 D
6、ataSet ds = new DataSet(myDataSet); DataSet ds = new DataSet(myDataSet); / / 創(chuàng)建兩個數(shù)據(jù)表創(chuàng)建兩個數(shù)據(jù)表 DataTable dt1 = new DataTable(DT001); DataTable dt1 = new DataTable(DT001); ds.Tables.Add(dt1); ds.Tables.Add(dt1); DataTable dt2 = ds.Tables.Add(DT002); DataTable dt2 = ds.Tables.Add(DT002); / / 第一個表的架構(gòu),由第一個
7、表的架構(gòu),由idid和字符串組成和字符串組成 dt1.Columns.Add(ID, typeof(int); dt1.Columns.Add(ID, typeof(int); dt1.Columns.Add(Name, typeof(string); dt1.Columns.Add(Name, typeof(string); / / 第一個表的數(shù)據(jù)第一個表的數(shù)據(jù) for (int i = 0; i 5; i+) for (int i = 0; i 5; i+) DataRow dr = dt1.NewRow(); DataRow dr = dt1.NewRow(); drID = i + 1
8、; drID = i + 1; drName = string.Format(C0, i + 1); drName = string.Format(C0, i + 1); dt1.Rows.Add(dr); dt1.Rows.Add(dr); 二、基本知識及技能DataSet / 第二個表的架構(gòu),由第二個表的架構(gòu),由id和一個隨機(jī)數(shù)組成和一個隨機(jī)數(shù)組成 dt2.Columns.Add(ID, typeof(int); dt2.Columns.Add(Random, typeof(float); / 第二個表的數(shù)據(jù)第二個表的數(shù)據(jù) Random rand = new Random(DateTime
9、.Now.Millisecond); for (int i = 0; i 5; i+) DataRow dr = dt2.NewRow(); drID = i + 1; drRandom = rand.Next(100); dt2.Rows.Add(dr); 二、基本知識及技能DataSet4. DataSet中添加DataTable5.刪除DataSet中的DataTableds.Tables.Remove(strTableName);ds.Tables.RemoveAt(nTableIndex);二、基本知識及技能DataSet 二、基本知識及技能DataAdapter對象 1. Data
10、Adapter1. DataAdapter對象基本概念對象基本概念DataAdapter是和數(shù)據(jù)集(DataSet)一起使用的對象,它包括在一個數(shù)據(jù)庫連接后用于填充數(shù)據(jù)集和更新數(shù)據(jù)源的一組數(shù)據(jù)命令,在數(shù)據(jù)庫與數(shù)據(jù)集之間起橋梁作用。DataAdapter的作用相當(dāng)于綁定的DataSet對象和持久的數(shù)據(jù)存儲之間的通道。上面講的數(shù)據(jù)存儲可以是數(shù)據(jù)庫、XML文件、Excel、甚至是純文本。DataAdapter是專門為處理脫機(jī)數(shù)據(jù)而設(shè)計的。2.2.創(chuàng)建創(chuàng)建DataAdapterDataAdapter對象對象 根據(jù)DataAdapter對象構(gòu)造函數(shù)不同,有三種創(chuàng)建方式 string strConn=“D
11、ata Source=.;Initial Catalog=northwind;User ID=MyUserid;Password=myPassword;“ /連接字符串 string strSQL=“select * from sustomers”;/查詢語句字符串 用查詢串和連接字符串用查詢串和連接字符串SqlDataAdapter da=new SqlDataAdapter (strSQL,strConn);該方式會為每個SqlDataAdapter 創(chuàng)建一個新的SQLconnection對象,應(yīng)適當(dāng)選擇。 用查詢串和連接對象用查詢串和連接對象SQLconnection cn=new sq
12、lConnection(strConn);SqlDataAdapter da=new SqlDataAdapter (strSQL,cn);比較常用的方式 使用使用sqlcommandsqlcommand對象對象sqlCommand cmd=new sqlcommand(strSQL,CN);SqlDataAdapter da=new SqlDataAdapter (cmd);已存在一個sqlcommand對象時使用二、基本知識及技能DataAdapter對象3.DataAdapter3.DataAdapter對象的方法對象的方法FillFill方法方法 作用: Fill 方法在 DataSe
13、t中添加或刷新行以匹配數(shù)據(jù)源中的行 Fill 方法使用 SELECT 語句從數(shù)據(jù)源中檢索數(shù)據(jù)。 Fill方法一共有4種常用的重構(gòu)方法 Fill(DataSet) DataSet結(jié)果集 Fill(DataTable) DataTable對象 Fill(Int32,Int32,params DataTable) 開始記錄索引 要填充的數(shù)據(jù)表的行數(shù) DataTable對象 Fill(DataSet, Int32,Int32,String) DataSet結(jié)果集對象 開始記錄的索引 要填充的數(shù)據(jù)集的行數(shù) 表名二、基本知識及技能DataAdapter對象4.DataAdapter4.DataAdapte
14、r對象的屬性對象的屬性用來控制數(shù)據(jù)閱讀或插入、修改、刪除或更新的屬性。用來控制與數(shù)據(jù)集之間通信的屬性。二、基本知識及技能DataAdapter對象屬性屬性描述描述SelectCommand在數(shù)據(jù)源中檢索數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中檢索數(shù)據(jù)的數(shù)據(jù)命令I(lǐng)nsertCommand在數(shù)據(jù)源中插入數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中插入數(shù)據(jù)的數(shù)據(jù)命令UpdateCommand在數(shù)據(jù)源中更新數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中更新數(shù)據(jù)的數(shù)據(jù)命令DeleteCommand在數(shù)據(jù)源中刪除數(shù)據(jù)的數(shù)據(jù)命令在數(shù)據(jù)源中刪除數(shù)據(jù)的數(shù)據(jù)命令TableMappingsDataTableMapping 對象的集合,決定對象的集合,決定DataSet中的
15、行與數(shù)據(jù)源之間的中的行與數(shù)據(jù)源之間的關(guān)系關(guān)系UpdateBatchSize決定批進(jìn)程支持,指出在批處理中可執(zhí)行的命令的數(shù)量決定批進(jìn)程支持,指出在批處理中可執(zhí)行的命令的數(shù)量4.DataAdapter4.DataAdapter對象的屬性對象的屬性SelectCommand命令屬性的應(yīng)用二、基本知識及技能DataAdapter對象SqlDataAdapter adapter = new SqlDataAdapter();SqlCommand command = new SqlCommand(SELECT * FROM STUDENT + WHERE SAGE = SAGE, connection);
16、command.Parameters.Add(“SAGE”,SqlDbType.Int);/設(shè)設(shè)置命令置命令參數(shù)參數(shù)的的類類型型command.Parameters0.Value = age;/設(shè)設(shè)置命令置命令參數(shù)參數(shù)的的值值adapter.SelectCommand = command;/屬屬性性SelectCommandSelectCommand賦值賦值 其他命令屬性的設(shè)置與SelectCommand類似類似,只將對應(yīng)的sql 改為 update、insert、delete即可5.DataAdapter5.DataAdapter對象的方法對象的方法Update方法 為指定的 DataRow
17、對象數(shù)組中每個已插入、已更新或已刪除的行調(diào)用相應(yīng)的 INSERT、UPDATE 或 DELETE 語句 當(dāng)應(yīng)用程序調(diào)用 Update 方法時,DbDataAdapter根據(jù) DataSet中配置的索引順序為每一行檢查 RowState 屬性,并迭代執(zhí)行所需的 INSERT、UPDATE 或 DELETE 語句。例如,由于 DataTable中行的排序,Update 可能先執(zhí)行一個 DELETE 語句,接著執(zhí)行一個 INSERT 語句,然后再執(zhí)行另一個 DELETE 語句。 如果未指定 INSERT、UPDATE 或 DELETE 語句,Update 方法會生成異常。但是,如果設(shè)置 .NET F
18、ramework 數(shù)據(jù)提供程序的 SelectCommand 屬性,則可以創(chuàng)建 SqlCommandBuilder或 OleDbCommandBuilder對象來為單個表更新自動生成 SQL 語句。二、基本知識及技能DataAdapter對象6.DataAdapter6.DataAdapter對象的事件對象的事件 DataAdapter 公開了三個可用于響應(yīng)對數(shù)據(jù)源中的數(shù)據(jù)所作更改的事件。下表顯示了這些 DataAdapter 事件。事件說明RowUpdating將要開始對某行執(zhí)行 UPDATE、INSERT 或 DELETE 操作(通過調(diào)用 Update 方法之一) RowUpdated對某
19、行的 UPDATE、INSERT 或 DELETE通過調(diào)用 Update 方法之一)已完成。FillError 在 Fill 操作過程中出錯。二、基本知識及技能DataAdapter對象三、任務(wù)七的實施(1)新建頁面,添加服務(wù)器控件,按樣張完成注冊頁面的設(shè)計(2)為注冊按鈕添加單擊事件代碼,代碼描述如下:斷開連接狀態(tài)第一步:使用connetion對象連接數(shù)據(jù)庫第二步:使用DataAdapter和DataSet對象實現(xiàn)讀取數(shù)據(jù)到數(shù)據(jù)集第三步:添加數(shù)據(jù)集的行及數(shù)據(jù)第四步:實現(xiàn)數(shù)據(jù)庫的更新連接狀態(tài)第一步:使用connetion對象連接數(shù)據(jù)庫第二步:使用Command對象實現(xiàn)數(shù)據(jù)插入數(shù)據(jù)庫三、任務(wù)七的
20、實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(斷開連接狀態(tài))protected void Button1_Click(object sender, EventArgs e) string strname = this.txtyhm.Text.ToString(); if (!HasUser(strname)/判判斷斷是否有是否有該該用用戶戶 string str = server=.;database=db_Discuss;UId=sa;password=123; SqlConnection con = new SqlConnecti
21、on(str); SqlDataAdapter da = new SqlDataAdapter(“select * from tb_Users”, con); /創(chuàng)創(chuàng)建建對對象象DataAdapter da.InsertCommand = new SqlCommand(insert into tb_Users values + (UserName,UserPwd,Ename,Email,Logo), con); da.InsertCommand.Parameters.Add(“UserName”, SqlDbType.NVarChar, 50, “UserName”);/設(shè)設(shè)置置SQL語語句句
22、參數(shù)參數(shù) 三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(斷開連接狀態(tài))(續(xù)) /設(shè)設(shè)置置SQL語語句句參數(shù)參數(shù) da.InsertCommand.Parameters.Add(UserPwd, SqlDbType.NVarChar, 50, UserPwd); da.InsertCommand.Parameters.Add(Ename, SqlDbType.NVarChar, 50, Ename); da.InsertCommand.Parameters.Add(Email, SqlDbType.NVarChar, 50,
23、 Email); da.InsertCommand.Parameters.Add(Logo, SqlDbType.NVarChar, 50, Logo); 三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(斷開連接狀態(tài))(續(xù))try /向用向用戶戶表中表中插插入注入注冊冊信息信息 DataSet ds = new DataSet();/創(chuàng)創(chuàng)建建數(shù)數(shù)據(jù)集據(jù)集 da.Fill(ds, “tb_Users”);/填填充充數(shù)數(shù)據(jù)集據(jù)集 DataRow dr = ds.Tables“tb_Users”.NewRow();/創(chuàng)創(chuàng)建新的行建
24、新的行 dr“UserName” = this.txtyhm.Text; /設(shè)設(shè)置行的列置行的列UserName的的值為值為文本框的文本框的值值 drUserPwd = this.txtyhmm.Text; drEname = this.txtywname.Text; drEmail = this.txtemail.Text; drLogo = this.ddltouxiang.SelectedItem.Text.ToString(); ds.Tablestb_Users.Rows.Add(dr); da.Update(ds, “tb_Users”);/執(zhí)執(zhí)行行插插入入語語句,添加句,添加數(shù)數(shù)
25、據(jù)集據(jù)集數(shù)數(shù)據(jù)據(jù) da.Fill(ds, “tb_Users”);/重新重新填填充充數(shù)數(shù)據(jù)集據(jù)集 Response.Write(alert(注注冊冊成功,成功,請請登登錄錄););三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(斷開連接狀態(tài))(續(xù))catch (Exception error)/注注冊冊不成功不成功執(zhí)執(zhí)行下面的提示行下面的提示 string errmesage = 數(shù)數(shù)據(jù)提交據(jù)提交錯誤錯誤!注!注冊冊不成功!不成功! + error.Message; Response.Write(alert( + errme
26、sage + );location=javascript:history.go(-1); else /如果用如果用戶戶已已經(jīng)經(jīng)注注冊給冊給出提示出提示 Response.Write(alert(很很遺遺憾,已有憾,已有該該用用戶戶,請你輸請你輸入入其其它它的用的用戶戶姓名!姓名!);location=javascript:history.go(-1); 三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(連接狀態(tài)) protected void Button1_Click(object sender, EventArgs e)
27、string strname = this.txtyhm.Text.ToString(); if (!HasUser(strname) string str = server=.;database=db_Discuss;UId=sa;password=123; SqlConnection con = new SqlConnection(str); string insertsql = insert into tb_Users values(UserName,UserPwd,Ename,Email,Logo); SqlCommand cmd = new SqlCommand(insertsql,
28、 con); cmd.Parameters.AddWithValue(UserName, this.txtyhm.Text); cmd.Parameters.AddWithValue(UserPwd, this.txtyhmm.Text); cmd.Parameters.AddWithValue(Ename, this.txtywname.Text); cmd.Parameters.AddWithValue(Email, this.txtemail.Text); cmd.Parameters.AddWithValue(Logo, this.ddltouxiang.SelectedItem.Te
29、xt.ToString(); 三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(連接狀態(tài))(續(xù))try /實現(xiàn)實現(xiàn)注注冊冊信息信息寫寫入入數(shù)數(shù)據(jù)據(jù)庫庫 /向用向用戶戶表中表中插插入注入注冊冊信息信息 con.Open(); /打打開數(shù)開數(shù)據(jù)據(jù)庫連庫連接接 cmd.ExecuteNonQuery(); /執(zhí)執(zhí)行行插插入命令入命令 con.Close();/關(guān)閉數(shù)關(guān)閉數(shù)據(jù)據(jù)庫連庫連接接 Response.Write(“ alert(注注冊冊成功,成功,請請登登錄錄);”);/提示提示成功成功 Response.Redirect(“
30、/denglu/denglu.aspx”);/跳跳轉(zhuǎn)轉(zhuǎn)到登到登錄頁錄頁面面 三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下注冊按鈕單擊事件代碼(連接狀態(tài))(續(xù))catch (Exception error) /注注冊冊失失敗敗,給給出提示出提示 string errmesage = 數(shù)數(shù)據(jù)提交據(jù)提交錯誤錯誤!注!注冊冊不成功!不成功! + error.Message; Response.Write(“alert(” + errmesage + “);location=javascript:history.go(-1)”);/彈彈出注出注冊冊失失
31、敗敗的信息,的信息,并并回到注回到注冊頁冊頁面面 else /當(dāng)當(dāng)有有該該用用戶戶是是執(zhí)執(zhí)行下面的行下面的語語句句 Response.Write(“alert(很很遺遺憾,已有憾,已有該該用用戶戶,請你輸請你輸入其入其它它的的用用戶戶姓名!姓名!);location=javascript:history.go(-1)”);/提示已有提示已有該該用用戶戶 三、任務(wù)七的實施后臺代碼:編寫注冊按鈕的單擊事件代碼如下后臺代碼:編寫注冊按鈕的單擊事件代碼如下頁面加載時,實現(xiàn)下拉列表的數(shù)據(jù)綁定protected void Page_Load(object sender, EventArgs e) if (
32、!Page.IsPostBack) string str = server=.;database=db_Discuss;UId=sa;password=123; SqlConnection con = new SqlConnection(str);SqlDataAdapter myda = new SqlDataAdapter(select * from tb_touxiang, con); DataSet myds = new DataSet(); myda.Fill(myds, tb_touxiang); this.ddltouxiang.DataSource = myds.Tablestb_touxiang; this.ddltouxiang.DataTextField = “Image”;/設(shè)設(shè)置控件的置控件的綁綁定列定列 this.ddltouxiang.DataBind();/下拉列表下拉列表綁綁定定數(shù)數(shù)據(jù)據(jù) this.imgtouxiang.ImageUrl = this.ddltouxiang.SelectedValue;/設(shè)設(shè)置置圖圖像控像控件的件的圖圖片路片路徑為徑為下拉列表下拉列表選擇選擇的路的路徑徑 任務(wù)描述:設(shè)計登錄頁面,實現(xiàn)登錄功能。四、任務(wù)七的拓展(1)新建頁面,添加服務(wù)器控件,按樣張完成登錄頁面的設(shè)計(2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康生活遠(yuǎn)離疾病課件
- 健康游戲課件幼兒園
- 2025年公用事業(yè)行業(yè)投資策略分析報告:能源轉(zhuǎn)型開啟降本周期
- 營銷策劃管理崗管理辦法
- 蔡甸區(qū)礦產(chǎn)開采管理辦法
- 蚌埠柴油車管理辦法細(xì)則
- 西藏新投資項目管理辦法
- 衢江區(qū)項目報備管理辦法
- 西安養(yǎng)老社會化管理辦法
- 規(guī)范ppp項目管理辦法
- 2025年上海閔行區(qū)高三一模高考英語模擬試卷(含答案詳解)
- 2025年湖北十堰市竹山縣事業(yè)單位招聘工作人員89人高頻重點提升(共500題)附帶答案詳解
- GB/T 17145-2024廢礦物油回收與再生利用導(dǎo)則
- 網(wǎng)絡(luò)營銷的熱點技術(shù)與趨勢分析
- 涂料的基礎(chǔ)知識
- 《肥胖與疾病關(guān)系的》課件
- 新疆防沙治沙生態(tài)建設(shè)可行性研究報告
- 國家開放大學(xué)《社會調(diào)查方法》期末考試題庫
- 新生兒腹瀉護(hù)理查房
- 公共體育場建設(shè)項目可行性研究報告
- 病理全流程數(shù)字化系統(tǒng)項目需求
評論
0/150
提交評論