版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第11章JDBC連接數(shù)據(jù)庫11.1關系數(shù)據(jù)庫與SQL語言11.2使用JDBC連接數(shù)據(jù)庫11.3JDBC編程實例11.1關系數(shù)據(jù)庫與SQL語言SQL是StructuredQueryLanguage的縮寫,意思是結構化查詢語言。SQL語言作為關系型數(shù)據(jù)庫管理系統(tǒng)的標準語言,其主要功能是同各種數(shù)據(jù)庫建立聯(lián)系并進行操作。SQL最初是由IBM公司提出的,其主要功能是對IBM自行開發(fā)的關系型數(shù)據(jù)庫進行操作。11.1.1關系數(shù)據(jù)庫的基本概念顧名思義,數(shù)據(jù)庫(DataBase)是存儲數(shù)據(jù)的倉庫,用專業(yè)術語來說它是指長期存儲在計算機內的、有組織的、可共享的數(shù)據(jù)集合。在關系型數(shù)據(jù)庫中,數(shù)據(jù)以記錄(Record)和字段(Field)的形式存儲在數(shù)據(jù)表(Table)中,由若干個數(shù)據(jù)表構成一個數(shù)據(jù)庫。數(shù)據(jù)表是關系數(shù)據(jù)庫的一種基本數(shù)據(jù)結構。如圖1所示,數(shù)據(jù)表在概念上很像我們日常所使用的二維表格(關系代數(shù)中稱為關系)。數(shù)據(jù)表中的一行稱為一條記錄,任意一列稱為一個字段,字段有字段名與字段值之分。字段名是表的結構部分,由它確定該列的名稱、數(shù)據(jù)類型和限制條件。圖1學生數(shù)據(jù)庫的組成及相關名詞SQL語言的操作對象主要是數(shù)據(jù)表。依照SQL命令操作關系型數(shù)據(jù)庫的不同功能,可將SQL命令分成數(shù)據(jù)定義語言DDL(DataDefinitionLanguage)、數(shù)據(jù)操縱語言DML(DataManipulationLanguage)、數(shù)據(jù)查詢語言DQL(DataQueryLanguage)和數(shù)據(jù)控制語言DCL(DataControlLanguage)四大類。11.1.2數(shù)據(jù)定義語言數(shù)據(jù)定義語言提供對數(shù)據(jù)庫及其數(shù)據(jù)表的創(chuàng)建、修改、刪除等操作,屬于數(shù)據(jù)定義語言的命令有Create、Alter和Drop。
1.創(chuàng)建數(shù)據(jù)表在SQL語言中,使用CREATETABLE語句創(chuàng)建新的數(shù)據(jù)庫表格。CREATETABLE語句的使用格式如下:
CREATETABLE表名(字段名l數(shù)據(jù)類型[限制條件],字段名2數(shù)據(jù)類型[限制條件],……,字段名n數(shù)據(jù)類型[限制條件])
說明:
(1)表名是指存放數(shù)據(jù)的表格名稱;字段名是指表格中某一列的名稱,通常也稱為列名。表名和字段名都應遵守標識符命名規(guī)則。
(2)數(shù)據(jù)類型用來設定某一個具體列中數(shù)據(jù)的類型。
(3)所謂限制條件就是當輸入此列數(shù)據(jù)時必須遵守的規(guī)則。這通常由系統(tǒng)給定的關鍵字來說明。例如,使用UNIQUE關鍵字限定本列的值不能重復;NOTNULL用來規(guī)定表格中該列的值不能為空;PRIMARYKEY表明該列為該表的主鍵(也稱主碼),它既限定本列的值不能重復,也限定該列的值不能為空。
(4)[]表示可選項(下同)。例如,CREATE語句中的限制條件便是一個可選項。
2.修改數(shù)據(jù)表修改數(shù)據(jù)表包括向表中添加字段和刪除字段。這兩個操作都使用ALTER命令,但其中的關鍵字有所不同。添加字段使用的格式為:
ALTERTABLE表名ADD字段名數(shù)據(jù)類型[限制條件]刪除字段使用的格式為:
ALTERTABLE表名DROP字段名3.刪除數(shù)據(jù)表在SQL語言中使用DROPTABLE語句刪除某個表格及表格中的所有記錄,其使用格式如下:
DROPTABLE表名11.1.3數(shù)據(jù)操縱語言
1.向數(shù)據(jù)表中插入數(shù)據(jù)
SQL語言使用INSERT語句向數(shù)據(jù)庫表格中插入或添加新的數(shù)據(jù)行,其格式如下:
INSERTINTO表名(字段名l,……,字段名n)VALUES(值l,……,值n)
說明:命令行中的“值”表示對應字段的插入值。在使用時要注意字段名的個數(shù)與值的個數(shù)要嚴格對應,二者的數(shù)據(jù)類型也應該一一對應,否則就會出現(xiàn)錯誤。
2.數(shù)據(jù)更新語句
SQL語言使用UPDATE語句更新或修改滿足規(guī)定條件的現(xiàn)有記錄,使用格式如下:
UPDATE表名SET字段名l新值l[,字段名2新值2……]WHERE條件說明:關鍵字WHERE引出更新時應滿足的條件,即滿足此條件的字段值將被更新。在WHERE從句中可以使用所有的關系運算符和邏輯運算符。
3.刪除記錄語句
SQL語言使用DELETE語句刪除數(shù)據(jù)庫表格中的行或記錄,其使用格式如下:
DELETEFROM表名WHERE條件說明:通常情況下,由關鍵字WHERE引出刪除時應滿足的條件,即滿足此條件的記錄將被刪除。如果省略WHERE子句,則刪除當前記錄。11.1.4數(shù)據(jù)查詢語句數(shù)據(jù)庫查詢是數(shù)據(jù)庫的核心操作。SQL語言提供了SELECT語句進行數(shù)據(jù)庫的查詢,并以數(shù)據(jù)表的形式返回符合用戶查詢要求的結果數(shù)據(jù)。SELECT語句具有豐富的功能和靈活的使用方式,其一般的語法格式如下:
SELECT[DISTINCT]字段名l[,字段名2,……]FROM表名[WHERE條件]
其中:DISTINCT表示不輸出重復值,即當查詢結果中有多條記錄具有相同的值時,只返回滿足條件的第一條記錄值;語句中的字段名用來決定哪些字段將作為查詢結果返回。用戶可以按照自己的需要返回數(shù)據(jù)表中的任意的字段,也可以使用通配符“*”來表示查詢結果中包含所有字段。11.2使用JDBC連接數(shù)據(jù)庫JDBC是JavaDataBaseConnectivity的縮寫,意思是Java程序連接和存取數(shù)據(jù)庫的應用程序接口(API)。此接口是Java核心API的一部分。JDBC由一群類和接口組成,因此,通過調用這些類和接口所提供的成員方法,我們可以方便地連接各種不同的數(shù)據(jù)庫,進而使用標準的SQL命令對數(shù)據(jù)庫進行查詢、插入、刪除、更新等操作。11.2.1JDBC結構我們只要在Java數(shù)據(jù)庫應用程序中指定使用某個數(shù)據(jù)庫的JDBC驅動程序,就可以連接并存取指定的數(shù)據(jù)庫。而且,當我們要連接幾個不同的數(shù)據(jù)庫時,只需修改程序中的JDBC驅動程序,無需對其他的程序代碼做任何改動。JDBC的基本結構由Java程序、JDBC管理器、驅動程序和數(shù)據(jù)庫四部分組成,如圖2所示。在這四部分中,根據(jù)數(shù)據(jù)庫的不同,相應的驅動程序又可分為四種類型。圖16.2JDBC驅動程序存取結構
1.Java應用程序
Java程序包括Java應用程序和小應用程序,主要是根據(jù)JDBC方法實現(xiàn)對數(shù)據(jù)庫的訪問和操作。完成的主要任務有:請求與數(shù)據(jù)庫建立連接;向數(shù)據(jù)庫發(fā)送SQL請求;為結果集定義存儲應用和數(shù)據(jù)類型;查詢結果;處理錯誤;控制傳輸、提交及關閉連接等操作。
2.JDBC管理器
JDBC管理器為我們提供了一個“驅動程序管理器”,它能夠動態(tài)地管理和維護數(shù)據(jù)庫查詢所需要的所有驅動程序對象,實現(xiàn)Java程序與特定驅動程序的連接。它完成的主要任務有:為特定數(shù)據(jù)庫選擇驅動程序;處理JDBC初始化調用;為每個驅動程序提供JDBC功能的入口;為JDBC調用執(zhí)行參數(shù)等。
3.驅動程序驅動程序處理JDBC方法,向特定數(shù)據(jù)庫發(fā)送SQL請求,并為Java程序獲取結果。驅動程序可以完成下列任務:建立與數(shù)據(jù)庫的連接;向數(shù)據(jù)庫發(fā)送請求;用戶程序請求時,執(zhí)行翻譯;將錯誤代碼格式化成標準的JDBC錯誤代碼等。
4.數(shù)據(jù)庫這里的數(shù)據(jù)庫是指Java程序需要訪問的數(shù)據(jù)庫及其數(shù)據(jù)庫管理系統(tǒng)。11.2.2四類JDBC驅動程序當我們想要連接數(shù)據(jù)庫并存取其中的數(shù)據(jù)時,選擇適當類型的JDBC驅動程序是非常重要的。目前JDBC驅動程序可細分為四種類型,如圖2所示。不同類型的JDBC驅動程序有著不一樣的特性和使用方法。下面將說明不同類型的JDBC驅動程序之間的差異。
類型1:JDBC-ODBCBridge。這類驅動程序的特色是必須在我們的計算機上事先安裝好ODBC驅動程序,然后通過JDBC-ODBCBridge的轉換,把Java程序中使用的JDBCAPI轉換成ODBCAPI,進而通過ODBC來存取數(shù)據(jù)庫。類型2:JDBC-NativeAPIBridge。同類型1一樣,這類驅動程序也必須在我們的計算機上先安裝好特定的驅動程序(類似ODBC),然后通過JDBC-NativeAPIBridge的轉換,把Java程序中使用的JDBCAPI轉換成NativeAPI,進而存取數(shù)據(jù)庫。
類型3:JDBC-Middleware。使用這類驅動程序時不需要在我們的計算機上安裝任何附加軟件,但是必須在安裝數(shù)據(jù)庫管理系統(tǒng)的服務器端加裝中介軟件(Middleware),這個中介軟件會負責所有存取數(shù)據(jù)庫時必要的轉換。類型4:PureJDBCDriver。使用這類驅動程序時無需安裝任何附加的軟件(無論是我們的計算機或是數(shù)據(jù)庫服務器端),所有存取數(shù)據(jù)庫的操作都直接由JDBC驅動程序來完成。最佳的JDBC驅動程序類型是類型4,因為使用類型4的JDBC驅動程序不會增加任何額外的負擔,而且類型4的JDBC驅動程序是由純Java語言開發(fā)而成的,因此擁有最佳的兼容性。反觀類型1和類型2的JDBC驅動程序都必須事先安裝其他附加的軟件,若我們有30臺計算機就必須安裝30次附加軟件,這將使Java數(shù)據(jù)庫程序的兼容性大打折扣。使用類型3的JDBC驅動程序也是不錯的選擇,因為類型3的JDBC驅動程序也是由純Java語言開發(fā)而成的,并且中介軟件也僅需要在服務器上安裝。因此,我們建議最好以類型3和類型4的JDBC驅動程序為主要選擇,類型1和類型2的JDBC驅動程序為次要的選擇。11.2.3JDBC編程要點在Java中使用數(shù)據(jù)庫進行JDBC編程時,Java程序中通常應包含下述幾部分內容:
(1)在程序的首部用import語句將java.sql包引入程序:
importjava.sql.*;(2)使用Class.forName()方法加載相應數(shù)據(jù)庫的JDBC驅動程序。若以加載jdbc-odbc橋為例,則相應的語句格式為:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");(3)定義JDBC的URL對象。例如:
StringconURL="jdbc:odbc:TestDB";
其中TestDB是我們設置的要創(chuàng)建的數(shù)據(jù)源。
(4)連接數(shù)據(jù)庫。
Connections=DriverManager.getConnection(conURL);(5)使用SQL語句對數(shù)據(jù)庫進行操作。
(6)使用close()方法解除Java與數(shù)據(jù)庫的連接并關閉數(shù)據(jù)庫。例如:
s.close();11.2.4常用的JDBC類與方法
1.DriverManage類
java.sql.DriverManager類是JDBC的管理器,負責管理JDBC驅動程序,跟蹤可用的驅動程序并在數(shù)據(jù)庫和相應驅動程序之間建立連接。如果我們要使用JDBC驅動程序,必須加載JDBC驅動程序并向DriverManage注冊后才能使用。加載和注冊驅動程序可以使用Class.forName()這個方法來完成。此外,java.sql.DriverManager類還處理如驅動程序登錄時間限制及登錄和跟蹤消息的顯示等事務。
2.Connection類
java.sql.Connection類負責建立與指定數(shù)據(jù)庫的連接。
3.Statement類
java.sql.Statement類的主要功能是將SQL命令傳送給數(shù)據(jù)庫,并將SQL命令的執(zhí)行結果返回。
4.PreparedStatement類
java.sql.PreparedStatement類的對象可以代表一個預編譯的SQL語句,它是Statement接口的子接口。由于PreparedStatement類會將傳入的SQL命令編譯并暫存在內存中,所以當某一SQL命令在程序中被多次執(zhí)行時,使用PreparedStatement類的對象執(zhí)行速度要快于Statement類的對象。因此,將需要多次執(zhí)行的SQL語句創(chuàng)建為PreparedStatement對象,可以提高效率。
PreparedStatement對象繼承Statement對象的所有功能,另外還添加一些特定的方法。
5.ResultSet類
java.sql.ResultSet類表示從數(shù)據(jù)庫中返回的結果集。當我們使用Statement和PreparedStatement類提供的executeQuery()方法來下達Select命令以查詢數(shù)據(jù)庫時,executeQuery()方法將會把數(shù)據(jù)庫響應的查詢結果存放在ResultSet類對象中供我們使用。11.2.5安裝ODBC驅動程序示例盡管在四類JDBC驅動程序中,以選擇類型三和類型四的JDBC驅動程序為最佳,但由于目前國內應用較廣的數(shù)據(jù)庫是MicrosoftAccess等微軟的產品,因此,本小節(jié)以它為例,說明創(chuàng)建ODBC用戶數(shù)據(jù)源的步驟。
(1)在Windows的“控制面板”中找到“ODBC(32)數(shù)據(jù)源”圖標并雙擊之,彈出如圖3所示的“ODBC數(shù)據(jù)源管理器”對話框。圖3“ODBC數(shù)據(jù)源管理器”對話框
(2)在“用戶DSN”選項卡的“用戶數(shù)據(jù)源”列表中選中“MSAccessDatebase”選項,然后單擊“添加”按鈕,彈出如圖4所示的“創(chuàng)建新數(shù)據(jù)源”對話框。圖4“創(chuàng)建新數(shù)據(jù)源”對話框
(3)在圖4中,選中“MicrosoftAccessDriver”項,然后單擊“完成”按鈕,彈出如圖5所示的“ODBCMicrosoftAccess安裝”對話框。在此對話框中,輸入數(shù)據(jù)源名稱后,單擊“創(chuàng)建”按鈕,彈出如圖6所示的“新數(shù)據(jù)庫”對話框。如果事先已經建好了數(shù)據(jù)庫,在圖5的對話框中也可單擊“選取”按鈕,進而指明數(shù)據(jù)庫的存放路徑。圖5“ODBCMicrosoftAccess安裝”對話框
(4)在圖6所示的“新數(shù)據(jù)庫”對話框中輸入數(shù)據(jù)庫名,選擇路徑,選擇排序,然后單擊“確定”按鈕,返回“ODBCMicrosoftAccess安裝”對話框。圖6“新數(shù)據(jù)庫”對話框
(5)在“ODBCMicrosoftAccess安裝”對話框中單擊“確定”按鈕,返回“ODBC數(shù)據(jù)源管理器”對話框,新添加的用戶數(shù)據(jù)源將出現(xiàn)在此對話框中,如圖7所示。此時,單擊“確定”按鈕,新用戶數(shù)據(jù)源創(chuàng)建完成。創(chuàng)建好用戶數(shù)據(jù)源后,便可以對這個數(shù)據(jù)源進行數(shù)據(jù)表的創(chuàng)建和修改,記錄的添加、修改和刪除等數(shù)據(jù)庫操作。圖7安裝完成后的“ODBC數(shù)據(jù)源管理器”對話框
64位操作系統(tǒng)不支持MicrosoftOLEDBProviderforJet驅動程序,也不支持更早的MicrosoftAccessDriver(*.mdb)方式連接。所以,程序里面的鏈接字符串不能正常工作.
Win7下Access的ODBC連接直接在控制面板---管理工具----數(shù)據(jù)源(ODBC)打開數(shù)據(jù)源配置,發(fā)現(xiàn)只有SQLServer的驅動,其他的都沒有了。
解決方法是:C:/Windows/SysWOW64在這個目錄下找到:odbcad32.exe這個文件,雙擊打開。里面有很多可用個數(shù)據(jù)源驅動,然后就可用添加連接Access的ODBC的數(shù)據(jù)源了。11.3JDBC編程實例11.3.1創(chuàng)建數(shù)據(jù)表
【示例程序c16_1.java】創(chuàng)建學生表student。此表有三個字段:學號(id)、姓名(name)及成績(score)。importjava.sql.*;//引入java.sql包publicclassc16_1{publicstaticvoidmain(String[]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";//聲明JDBC驅動程序對象
StringconURL="jdbc:odbc:TestDB";//定義JDBC的URL對象
try{Class.forName(JDriver);//加載JDBC-ODBC橋驅動程序
}catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage());}try{Connectioncon=DriverManager.getConnection(conURL);//連接數(shù)據(jù)庫URLStatements=con.createStatement();//建立Statement類對象
Stringquery="createtablestudent("+"idchar(10),"+"namechar(16),"+"scoreinteger"+")";//創(chuàng)建一個含有三個字段的學生表students.executeUpdate(query);//執(zhí)行SQL命令s.close();//釋放Statement所連接的數(shù)據(jù)庫及JDBC資源
con.close();//關閉與數(shù)據(jù)庫的連線
}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}其中,
createtablestudent(idchar(10),namechar(16),scoreinteger);
這個SQL語句表示建立一個名為student的表,包含id(字符型,寬度為10)、name(字符型,寬度為16)與score(數(shù)字型)三個字段。這段程序的操作結果是創(chuàng)建了一個數(shù)據(jù)庫中student表的結構,表中還沒有任何記錄。運行結果見數(shù)據(jù)庫文件TestDB.mdb。11.3.2向數(shù)據(jù)表中插入數(shù)據(jù)
【示例程序c16_2.java】在上例創(chuàng)建的數(shù)據(jù)表student中插入三個學生的記錄。importjava.sql.*;publicclassc16_2{
publicstaticvoidmain(String[]args)
{StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";
StringconURL="jdbc:odbc:TestDB";try{Class.forName(JDriver);//注冊驅動程序
}catch(java.lang.ClassNotFoundExceptione){System.out.println("ForName:"+e.getMessage(
));}try{Connectioncon=DriverManager.getConnection(conURL);//建立數(shù)據(jù)庫連接
Statements=con.createStatement(?);//創(chuàng)建Statement類對象s,準備進行SQL操作
Stringr1="insertintostudentvalues("+"'0001','王明',80)";Stringr2="insertintostudentvalues("+"'0002','高強',94)";Stringr3="insertintostudentvalues("+"'0003','李莉',82)";//使用SQL命令insert插入三條學生記錄到表中
s.executeUpdate(r1);//執(zhí)行SQL命令
s.executeUpdate(r2);s.executeUpdate(r3);s.close(?);//釋放Statement所連接的數(shù)據(jù)庫及JDBC資源
con.close(?);//關閉與數(shù)據(jù)庫的連線
}
catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage(
));}}}該程序的運行結果如圖16.8所示。
圖16.8程序c16_2的運行結果11.3.3更新數(shù)據(jù)
【示例程序c16_3.java】修改上例數(shù)據(jù)表中的第二條和第三條記錄的學生成績字段值,并把修改后的數(shù)據(jù)表的內容輸出到屏幕上。importjava.sql.*;publicclassc16_3{publicstaticvoidmain(String[?]args){StringJDriver="sun.jdbc.odbc.JdbcOdbcDriver";
StringconURL="jdbc:odbc:TestDB";String[
]id={"0002","0003"};
int[?]score={89,60};
try{
Class.forName(JDriver);
}catch(java.lang.ClassNotFoundExceptione)
{System.out.println("ForName:"+e.getMessage(
));}try
{Connectioncon=DriverManager.getConnection(conURL);
//修改數(shù)據(jù)庫中數(shù)據(jù)表的內容
PreparedStatementps=con.prepareStatement(
"UPDATEstudentsetscore=?whereid=?");inti=0,idlen=id.length;do{ps.setInt(1,score[i]);ps.setString(2,id[i]);
ps.executeUpdate(
);//執(zhí)行SQL修改命令
++i;}while(i<id.length);
ps.close();//查詢數(shù)據(jù)庫并把數(shù)據(jù)表的內容輸出到屏幕上
Statements=con.createStatement();ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next(?)){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("score"));}s.close();con.close();}catch(SQLExceptione){System.out.println("SQLException:"+e.getMessage());}}}
在這個程序中使用了PreparedStatement類,它提供了一系列的set方法來設定位置。請注意程序中PreparedStatement()方法中的參數(shù)“?”。程序中的語句:
PreparedStatementps=con.prepareStatement("UPDATEstudentsetscore=?whereid=?");ps.setInt(1,score[i]);//將score[i]的值作為SQL語句中第一個問號所代表參數(shù)的值
ps.executeUpdate();
其中"UPDATEstudentsetscore=?whereid=?"這個SQL語句中各字段的值并沒指定,而是以“?”表示。程序必須在執(zhí)行ps.executeUpdate()語句之前指定各個問號位置的字段值。例如,用ps.setInt(1,score[i])語句中的參數(shù)1指出這里的score[i]的值是SQL語句中第一個問號位置的值。當前面兩條語句執(zhí)行完后,才可執(zhí)行ps.executeUpdate()語句,完成對一條記錄的修改。程序中用到的查詢數(shù)據(jù)庫并把數(shù)據(jù)表的內容輸出到屏幕的語句是:ResultSetrs=s.executeQuery("select*fromstudent");while(rs.next()){System.out.println(rs.getString("id")+"\t"+rs.getString("name")+"\t"+rs.getInt("score"));}其中,executeQuery()返回一個Res
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生交接班管理制度
- 衛(wèi)生院輸血相關管理制度
- 衛(wèi)生院家風教育制度
- 中小學衛(wèi)生安全責任制度
- 鄉(xiāng)衛(wèi)生院中醫(yī)藥管理制度
- 宿舍及衛(wèi)生管理制度
- 美容院衛(wèi)生培訓制度
- 突公共衛(wèi)生事件處置制度
- 環(huán)境衛(wèi)生果皮箱管理制度
- 鎮(zhèn)食品衛(wèi)生管理制度
- 2025湖南銀行筆試題庫及答案
- 廣東省佛山市順德區(qū)2026屆高一數(shù)學第一學期期末檢測模擬試題含解析
- 新河北省安全生產條例培訓課件
- 字母認主協(xié)議書(2篇)
- 骨科研究生年終總結
- (完整)七年級生物上冊思維導圖
- 2026年全年日歷表帶農歷(A4可編輯可直接打?。╊A留備注位置
- HG20202-2014 脫脂工程施工及驗收規(guī)范
- DL∕T 1573-2016 電力電纜分布式光纖測溫系統(tǒng)技術規(guī)范
- 電梯維護保養(yǎng)規(guī)則(TSG T5002-2017)
- PLC控制的搶答器設計與仿真
評論
0/150
提交評論