




已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
JSP與數(shù)據(jù)庫 1 SQL語言簡介 2 JDBC簡介 3 使用JDBC連接數(shù)據(jù)庫 4 訪問數(shù)據(jù)庫 5 數(shù)據(jù)庫訪問應(yīng)用舉例 1 SQL語言簡介 在JSP中最常用到的SQL語句如下: (1)Select語句查詢數(shù)據(jù); (2)Insert語句添加記錄; (3)Delete語句刪除記錄; (4)Update語句更新記錄。 注意:SQL語句不區(qū)分大小寫 1.1 Select語句 SQL語言的主要功能之一是實現(xiàn)數(shù)據(jù)庫 查詢,其Select語句可以從數(shù)據(jù)庫中查詢滿足 特定條件的有關(guān)記錄。Select語句的語法如下 : Select Top(數(shù)據(jù))字段列表 From表 Where 條件Order By字段Group By字段 Top(數(shù)據(jù)) 字段列表 表 條件 Order By Group By 下列舉一些常見的例子說明。 (1)選取全部數(shù)據(jù) Select * From users (2)選取指定字段的數(shù)據(jù) 如果只想選取列表中某些字段的數(shù)據(jù), 在Select后面指定字段名,可以指定多個列 ,但每個列之間必須用逗號隔開。 Select real_name, email From users (3)只選取前若干條記錄 比如選取前3條記錄: Select Top (3)* From users (4)用表中原有的字段產(chǎn)生派生字段 有時候為了需要,可以利用一列或若干列產(chǎn) 生一個新的字段。例如,從存放用戶信息的 數(shù)據(jù)庫表中,可以顯示客戶注冊一年后的日 期: Select real _ name, (submit _ date+365) As new _ date From users (5)根據(jù)條件選取數(shù)據(jù) 比如選取2003年11月1日之前注冊的用戶: Select * From users Where submit _ date #2003-11-1# =等 于 不等于 大于 大于等于 小于 小于等于 Not非 And與 Or或 Between介于 Not Between不介于 In列的數(shù)據(jù)值位于所列的范圍內(nèi) Not In列的數(shù)據(jù)值不位于所列的范圍內(nèi) Is NULL列的數(shù)據(jù)值為 NULL Is Not NULL列的數(shù)據(jù)值不為NULL 表1條件連接符 (6)按關(guān)鍵字查找記錄 有時候查找條件可能不太精確,比如 ,要查詢所有姓名中有“勇”字的用戶: Select * From users Where real _ name like “%勇%” (7)查詢結(jié)果排序 表中數(shù)據(jù)時,特別是表中數(shù)據(jù)較多時,總 是希望表中的數(shù)據(jù)能夠按照我們要求的順序顯 現(xiàn)出來,利用Order By就可以實現(xiàn)。例如,將 查詢結(jié)果按姓名升序排列: Select * From users Order By real _ name ASC (8)查詢滿足條件的記錄的總數(shù) Select Count (*) As total From users Where submit _ date#2003-11-1# (9)組合查詢 Select users.real_name, day_log.log_date, day_log.IP From users, day_log Where users.user_name=day_log.user_name 在選取各個表的字段時,要標(biāo)明是哪個表 的字段。 用到的兩個表之間用逗號隔開。 在兩個表連接時,用到 users.user_name=pday_log.user_name條件, 表示根據(jù)兩個表中的user_name字段將兩個表 合成一個表。 這只是最簡單的組合查詢,還有左連接、 右連接等,請參考專門的SQL參考書籍。 (10)利用Group By分類合并 假如有一個學(xué)生成績表usergrade,字段 有user_name(學(xué)號)和grade(學(xué)分)和 class(班級),現(xiàn)在要求每個班級的總分和平 均分: Select Sum(grade) As total_grade, Average (grade) As average_grade From usergrade Group By class 1.2 Insert語句 Insert Into表(字段1,字段2,)Values(字段1的 值,字段2的值,) 下面舉一些常見的例子說明。 (1)只插入user_name字段 Insert Into users (user_name) Values (“l(fā)iya“) (2)只插入user_name和real_name字段 Insert Into users (user_name , real_name) Values (“zhangsan”, “張三“) (3)只插入user_name和submit_date字段 Insert Into users (user_name, submit_date) Values (“l(fā)uofang“,#2003-12-5#) (4)只插入user_name和age字段 Insert Into users (user_name, age) Values (“zhangpen“,23) (5)在users表中增加一條完整的記錄 Insert Into users (user_name, password, real_name, tel, email, submit_date) Values (“mengmeng“, “123456“, “萌萌“, ““, #2003-11-2#) 下面舉幾條經(jīng)常出錯的Insert語句。 (1)user_name 是主鍵,但沒有賦值 Insert Into users (real_name) Values (“涂涂“) (2)real_name 字段不允許空字符串,卻賦了 空字符串(兩個雙引號表示空字符串) Insert Into users (user_name, real_name) Values (“tutu“ “) (3)字符串字段兩邊沒有加雙引號 Insert Into users (user_name, real_name) Values (“tutu“,涂涂) 1.3 Delete 在SQL語言中,可以使用Delete語句刪除 表中無用的記錄。其語法如下: Delete From表Where條件 下面舉一些常用的例子。 (1)刪除user_name為“tutu”的用戶。 Delete From users where user_name=“tutu” (2)刪除2003年1月1日前注冊,且real_name 為“李亞”的用戶。 Delete From users where real_name=“李亞” and submit_date: 其中 n是子協(xié)議的名稱,如odbc,這個 名字說明數(shù)據(jù)源是個odbc類型的數(shù)據(jù)源。 n是用來標(biāo)識數(shù)據(jù)源的。根據(jù)子協(xié)議 的不同,subname可以差別很大,但不管使用什 么,subname都必須給出足夠詳細(xì)的信息以便連 接到數(shù)據(jù)庫。JDBC URL的subname部分的標(biāo)準(zhǔn) 格式如下: /hostname:port/subname 3.3 使用JDBC-ODBC橋連接數(shù)據(jù)庫 1使用JDBC-ODBC橋建立“數(shù)據(jù)源名稱” 的步驟 (1)打開Windows的控制面板,選擇“ODBC” 設(shè)置程序 (2)打開該程序后,選擇“系統(tǒng)DSN”選項卡建立系 統(tǒng)的ODBC數(shù)據(jù)源 (3)單擊“添加”按鈕添加新的系統(tǒng)DSN (4)在對話框中選擇適當(dāng)?shù)腛DBC驅(qū)動程序,此處 選擇Microsoft Access Driver(*.MDB),然后按“完成” 按鈕 (5)設(shè)置“數(shù)據(jù)源名”,并按“選擇”按鈕選擇特定的數(shù) 據(jù)庫。 (6)單擊“確定”按鈕完成ODBC DSN的建立。 2編寫JDBC-ODBC橋連接數(shù)據(jù) 庫的代碼 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“) ; String url=“jdbc:odbc:zxy” Connection conn; conn=DriverManager.getConnection(url,”,”); 3.4 使用JDBC橋直接連接數(shù)據(jù)庫 下面是用JDBC連接SQL Server7.0的程序代碼 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“).newInstance( ); String url=“jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=zxy”; String user=“zxy”; String password=“666666”; Connection conn=DriverManager.getConnection(url,user,password); 3.5 關(guān)閉與數(shù)據(jù)庫的連接 conn.close(); 4 訪問數(shù)據(jù)庫 java.sql包中與數(shù)據(jù)庫操作有關(guān)的接口主要有以 下幾個: (1)Connection (2)Statement (3)PreparedStatement (4)CallableStatement (5)ResultSet 4.1 使用SQL語句對數(shù)據(jù)庫進行操 作 1查詢操作 2獲取結(jié)果集的字段 方 法說 明 getBlob(int),getBlob(String)將指定字段的值以Blob對象類型返回 getBoolean(int),getBoolean(String)將指定字段的值以Boolean類型返回 getByte(int),getByte(String)將指定字段的值以Byte類型返回 getBytes(int),getBytes(String)將指定字段的值以Byte類型返回 getDate(int),getDate(String)將指定字段的值以Date對象類型返回 getDouble(int),getDouble(String)將指定字段的值以Double類型返回 getFloat(int),getFloat(String)將指定字段的值以Float類型返回 getInt(int),getInt(String)將指定字段的值以Int類型返回 getLong(int),getLong(String)將指定字段的值以Long類型返回 getObject(int),getObject(String)將指定字段的值以O(shè)bject類型返回 getShort(int),getShort(String)將指定字段的值以Short類型返回 getString(int),getString(String)將指定字段的值以String對象類型返回 表3 Result接口獲取字段的get方法 3記錄的插入、刪除和更新操作 4使用帶參數(shù)的SQL語句 (1)set方法組 (2)clearParameters()方法 (3)executeQuery()方法 (4)executeUpdate()方法 4.2 使用ResultSet對象對數(shù)據(jù)庫 進行操作 1結(jié)果集的游標(biāo)操作 (1)使用get或update方法組對當(dāng)前記錄 的字段進行操作。 (2)使用insertRow、deleteRow和 updateRow等方法對整條記錄進行操作。 (3)以當(dāng)前記錄為起點進行游標(biāo)的相對移 動操作。 方 法使 用 說 明 beforeFirst()移動到結(jié)果集的開始位置(第一條記錄 前) first()移動到第一條記錄 previous()上移一條記錄 next()下移一條記錄 last()移動到最后一條記錄 afterLast()移動到結(jié)果集的結(jié)束位置(最后一條記錄 后) absolute(int row)移動到row指定的記錄 ,絕對 定位 relative(int row)從當(dāng)前記錄 開始,上移或下移row條記錄 isBeforeFirst()判斷是否是結(jié)果集的開始位置 isFirst()判斷是否是結(jié)果集的第一條記錄 isLast()判斷是否是結(jié)果集的最后一條記錄 IsAfterLast()判斷是否是結(jié)果集的結(jié)束位置 表4ResultSet的游標(biāo)操作 2結(jié)果集的類型 Statement createStatement(int resultSetType,int resultSetConcurrency) (1)resultSetType定義了結(jié)果集的類型 (2)resultSetConcurrency決定結(jié)果集的更 新方式 3使用結(jié)果集對表進行操作 (1)更新操作 update方法組 updateRow()方法 cancelRowUpdates()方法 (2)插入操作 使用moveToInsertRow()方法將游標(biāo)移 動到插入行。 使用update方法組對插入行的字段進行 賦值。 使用insertRow()方法向數(shù)據(jù)庫的表提交 插入操作。 (3)刪除操作 9.4.3 數(shù)據(jù)庫的高級操作 1批量操作 實現(xiàn)批量操作需要使用Statement對象的下面3個方法 。 (1)void addBatch(String sql),向Statement對象 添加SQL語句。 (2)int executeBatch(),向數(shù)據(jù)庫提交Statement 對象中的SQL語句,SQL語句的執(zhí)行情況以整型數(shù)組 返回,數(shù)組元素的順序與SQL語句的順序一致。 (3)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護理燙傷不良事件
- 大面積皮膚擦傷護理案例
- 《消費者心理與行為》電子教案-第七章 經(jīng)濟文化環(huán)境的影響
- 基層黨建知識培訓(xùn)藏語課件
- 云南護理面試試題及答案
- 小自考行政管理治理體系完善試題及答案
- 2025年農(nóng)產(chǎn)品種植與銷售合同書
- 2025PE地板銷售合同
- 2025雇傭合同英文版參考
- 《血液》(教學(xué)設(shè)計)-2024-2025學(xué)年北師大版(2024)初中生物七年級下冊
- 2025太陽能光熱發(fā)電站熔融鹽儲熱系統(tǒng)技術(shù)
- 河北省中等職業(yè)學(xué)校專業(yè)設(shè)置管理辦法實施細(xì)則
- DB3501_T 001-2021工業(yè)(產(chǎn)業(yè))園區(qū)綠色低碳建設(shè)導(dǎo)則(高清版)
- 郵差先生詳細(xì)解析(小說復(fù)習(xí)用).ppt課件
- 氯化銨安全技術(shù)說明書MSDS
- 河海大學(xué)材料力學(xué)第五章彎曲應(yīng)力
- 關(guān)于建立涉農(nóng)貸款專項統(tǒng)計制的通知銀發(fā)號
- 螺桿設(shè)計說明書
- 國家開放大學(xué)《理工英語3》章節(jié)測試參考答案
- 常用螺電批扭力選用對照表
- run@rate表格實例
評論
0/150
提交評論