免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

DB2+JDBC數(shù)據(jù)庫應(yīng)用開發(fā)閉環(huán)方案:從連接到GUI的完整實(shí)踐

DB2+JDBC數(shù)據(jù)庫應(yīng)用開發(fā)閉環(huán)方案:從連接到GUI的完整實(shí)踐 簡(jiǎn)介本資源是吉林大學(xué)《數(shù)據(jù)庫應(yīng)用程序開發(fā)》課程的完整實(shí)驗(yàn)報(bào)告面向計(jì)算機(jī)專業(yè)本科生及Java數(shù)據(jù)庫開發(fā)初學(xué)者聚焦JDBC編程實(shí)戰(zhàn)能力培養(yǎng)。報(bào)告覆蓋8個(gè)遞進(jìn)式實(shí)驗(yàn)任務(wù)從JDBC連接配置、SELECT查詢與ResultSet遍歷到PreparedStatement事務(wù)控制、GUI界面封裝JOptionPane、多模式數(shù)據(jù)插入單行/多行/子查詢、空值統(tǒng)一顯示、結(jié)構(gòu)化異常處理直至結(jié)果集動(dòng)態(tài)編輯完整呈現(xiàn)數(shù)據(jù)庫應(yīng)用開發(fā)的核心鏈路與典型排錯(cuò)邏輯如權(quán)限授予、對(duì)象全限定名修正、溢出定位、自動(dòng)提交開關(guān)影響等。資源為1個(gè)1.76MB的Word文檔.doc內(nèi)容含詳細(xì)調(diào)試過程、錯(cuò)誤截圖說明、SQL語句片段、Java代碼關(guān)鍵段及運(yùn)行結(jié)果分析。目前已有900人學(xué)習(xí)下載適合需要系統(tǒng)掌握DB2Java交互開發(fā)、積累實(shí)驗(yàn)排錯(cuò)經(jīng)驗(yàn)的學(xué)習(xí)者直接參考復(fù)現(xiàn)。1. 這不是“寫個(gè) JDBC 連接”——而是一套能過答辯、能跑通、能改出新功能的數(shù)據(jù)庫應(yīng)用開發(fā)閉環(huán)方案你手頭這份《吉林大學(xué)數(shù)據(jù)庫應(yīng)用程序開發(fā)實(shí)驗(yàn)報(bào)告》表面看是八項(xiàng) JDBC 編程任務(wù)但真正卡住學(xué)生交作業(yè)、過答辯、被導(dǎo)師追問的從來不是“怎么寫 rs.next()”而是為什么改了表名還是報(bào)錯(cuò)為什么 update 成功卻查不到數(shù)據(jù)為什么 JOptionPane 彈窗一出來就崩為什么空值顯示成 null 而不是“空”為什么溢出錯(cuò)誤連堆棧都沒打全這不是 Java 語法題是真實(shí)數(shù)據(jù)庫應(yīng)用開發(fā)的最小閉環(huán)從權(quán)限配置、驅(qū)動(dòng)加載、連接管理、SQL 執(zhí)行、事務(wù)控制、結(jié)果集遍歷到 GUI 封裝、空值規(guī)整、異常分級(jí)捕獲、字段級(jí)編輯——每一環(huán)都藏著一個(gè)“不照做就翻車”的硬約束。本方案完全基于該實(shí)驗(yàn)原始任務(wù)結(jié)構(gòu)含 JLU.TEMPL 表、db2admin 用戶、SAMPLE 數(shù)據(jù)庫、DB2 JDBC 驅(qū)動(dòng)等真實(shí)上下文不替換技術(shù)棧、不抽象環(huán)境、不跳過報(bào)錯(cuò)截圖邏輯直接給出可編譯、可調(diào)試、可演示、可答辯的完整實(shí)現(xiàn)路徑。適合正在趕畢設(shè)/課設(shè) deadline 的同學(xué)也適合作為某高校數(shù)據(jù)庫課程設(shè)計(jì)的標(biāo)準(zhǔn)化交付模板——它解決的不是“會(huì)不會(huì)”而是“怎么讓系統(tǒng)穩(wěn)穩(wěn)當(dāng)當(dāng)?shù)匕咽伦鐾辍薄?. 總體架構(gòu)設(shè)計(jì)三層結(jié)構(gòu)與四個(gè)核心模塊的職責(zé)劃分本方案嚴(yán)格遵循數(shù)據(jù)庫應(yīng)用開發(fā)的經(jīng)典分層模型將全部 8 個(gè)任務(wù)拆解為表示層GUI、業(yè)務(wù)邏輯層JDBC 操作封裝、數(shù)據(jù)訪問層Connection/Statement/ResultSet 管理和基礎(chǔ)支撐層異常處理、空值轉(zhuǎn)換、事務(wù)策略。這種劃分不是為了畫圖好看而是為了解決實(shí)驗(yàn)中反復(fù)出現(xiàn)的耦合問題比如任務(wù) 4 做 GUI 時(shí)直接嵌 SQL 字符串導(dǎo)致任務(wù) 5 插入邏輯一改任務(wù) 4 全崩又如任務(wù) 3 關(guān)閉 autocommit 后忘記 commit任務(wù) 8 的字段編輯就永遠(yuǎn)落不了庫。下面按模塊說明設(shè)計(jì)依據(jù)與落地約束。2.1 表示層JOptionPane 不是“彈窗玩具”而是狀態(tài)反饋中樞很多同學(xué)把JOptionPane.showInputDialog()當(dāng)作“輸入框替代品”但實(shí)驗(yàn)任務(wù) 4–8 明確要求所有用戶輸入、執(zhí)行結(jié)果、錯(cuò)誤提示必須通過 JOptionPane 完成。這就決定了表示層不能只負(fù)責(zé)“彈”更要負(fù)責(zé)“判”和“轉(zhuǎn)”輸入值必須做類型預(yù)校驗(yàn)如 deptno 必須是整數(shù)salary 修改因子必須是浮點(diǎn)數(shù)否則pstmt.setInt(1, Integer.parseInt(input))一遇到非數(shù)字就拋NumberFormatException且無法被 SQL 異常處理器捕獲執(zhí)行成功后必須調(diào)用JOptionPane.showMessageDialog(null, 共更新 3 行, 操作完成, JOptionPane.INFORMATION_MESSAGE)而非簡(jiǎn)單System.out.println——因?yàn)榇疝q演示時(shí)評(píng)委只看 GUI錯(cuò)誤提示必須區(qū)分層級(jí)約束沖突如主鍵重復(fù)用ERROR_MESSAGE類型不匹配用WARNING_MESSAGESQL 語法錯(cuò)誤用PLAIN_MESSAGE并附帶SQLState這是任務(wù) 7 的硬性驗(yàn)收點(diǎn)。提示不要在showInputDialog返回后立刻執(zhí)行數(shù)據(jù)庫操作。務(wù)必先trim()去空格、再isEmpty()判空、最后matches(\\d(\\.\\d)?)校驗(yàn)數(shù)字格式。我?guī)н^的某跨平臺(tái)系統(tǒng) Demo 中有 A 同學(xué)因未校驗(yàn)輸入空格導(dǎo)致 15 被傳入setInt報(bào)NumberFormatException而異常處理器只捕獲SQLException最終程序靜默退出——評(píng)委提問“為什么沒報(bào)錯(cuò)也沒結(jié)果”當(dāng)場(chǎng)啞火。2.2 業(yè)務(wù)邏輯層JDBC 操作必須封裝為可復(fù)用、可測(cè)試的方法塊任務(wù) 2–8 的核心差異在于 SQL 類型SELECT/UPDATE/INSERT和參數(shù)數(shù)量但 Connection 獲取、Statement 創(chuàng)建、資源關(guān)閉邏輯完全重復(fù)。若每處都手寫Connection conn DriverManager.getConnection(jdbc:db2:sample, db2admin, db2admin); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(select ...); // ... 處理 rs rs.close(); stmt.close(); conn.close();則任務(wù) 5 的多行插入、任務(wù) 8 的字段級(jí)編輯會(huì)因某處漏關(guān)ResultSet導(dǎo)致 DB2 連接池耗盡報(bào)SQLCODE-1032權(quán)限不足假象。因此本方案強(qiáng)制封裝為工具方法// DBUtil.java public static Connection getConnection() throws SQLException { try { Class.forName(COM.ibm.db2.jdbc.app.DB2Driver); } catch (ClassNotFoundException e) { throw new RuntimeException(DB2 JDBC Driver not found, e); } return DriverManager.getConnection(jdbc:db2:sample, db2admin, db2admin); } public static void closeQuietly(AutoCloseable... resources) { for (AutoCloseable r : resources) { if (r ! null) { try { r.close(); } catch (Exception ignored) {} } } }所有任務(wù)中的數(shù)據(jù)庫操作均調(diào)用getConnection()獲取連接操作完畢后統(tǒng)一closeQuietly(rs, stmt, conn)。這不僅是代碼整潔問題更是任務(wù) 3 中“update 成功但無效”的根因排查關(guān)鍵——當(dāng)事務(wù)未提交時(shí)conn.close()會(huì)隱式 rollback而手動(dòng)closeQuietly可確保conn.commit()在關(guān)閉前執(zhí)行。2.3 數(shù)據(jù)訪問層ResultSet 必須做空值歸一化與列元數(shù)據(jù)綁定任務(wù) 6 要求“所有為空的列值均以‘空’形式顯示”但rs.getString(salary)對(duì) NULL 返回null直接JOptionPane.showMessageDialog(null, rs.getString(salary))會(huì)彈出null字符串。若用if (val null) val 空硬判斷則任務(wù) 8 的“任意行任意列修改”將無法動(dòng)態(tài)適配——因?yàn)槟悴恢滥囊涣惺?VARCHAR、哪一列是 INTEGER。解決方案是利用ResultSetMetaData動(dòng)態(tài)識(shí)別空值并轉(zhuǎn)換// ResultSetHandler.java public static String safeGetString(ResultSet rs, int columnIndex) throws SQLException { Object obj rs.getObject(columnIndex); return obj null ? 空 : obj.toString(); } public static void displayResultSet(ResultSet rs) throws SQLException { ResultSetMetaData meta rs.getMetaData(); int colCount meta.getColumnCount(); StringBuilder sb new StringBuilder(); // 表頭 for (int i 1; i colCount; i) { sb.append(meta.getColumnName(i)).append(\t); } sb.append(\n); // 數(shù)據(jù)行 while (rs.next()) { for (int i 1; i colCount; i) { sb.append(safeGetString(rs, i)).append(\t); } sb.append(\n); } JOptionPane.showMessageDialog(null, sb.toString(), 查詢結(jié)果, JOptionPane.INFORMATION_MESSAGE); }此設(shè)計(jì)使任務(wù) 6 和任務(wù) 8 的空值處理邏輯完全解耦任務(wù) 6 只需調(diào)用displayResultSet(rs)任務(wù) 8 的字段編輯器讀取單元格時(shí)也調(diào)用safeGetString(rs, col)無需為每個(gè)字段寫if-else。這是“玄學(xué)調(diào)試”變“確定性交付”的關(guān)鍵一步。2.4 基礎(chǔ)支撐層事務(wù)策略與異常分級(jí)必須寫進(jìn)主流程不能靠“想起來加”任務(wù) 3 明確要求setAutoCommit(false)任務(wù) 8 的字段編輯又要求實(shí)時(shí)生效這就產(chǎn)生矛盾是每次編輯都 commit還是攢一批批量 commit本方案采用顯式事務(wù)邊界 操作粒度綁定策略單行 INSERT任務(wù) 5開啟事務(wù) → 執(zhí)行 insert → commit → 關(guān)閉連接多行 INSERT任務(wù) 5開啟事務(wù) → 循環(huán) executeUpdate → commit → 關(guān)閉連接字段級(jí) UPDATE任務(wù) 8不開啟新事務(wù)復(fù)用當(dāng)前連接執(zhí)行后立即 commit因涉及單行狀態(tài)變更不允許回滾SELECT 查詢?nèi)蝿?wù) 2/8不涉及事務(wù)autoCommit 保持 true。異常處理同理任務(wù) 7 要求“以對(duì)話框提示所有違反約束、類型不匹配、溢出等錯(cuò)誤”但SQLException是父類必須根據(jù)getSQLState()和getErrorCode()分級(jí)SQLState 前綴錯(cuò)誤類型JOptionPane 類型提示文案示例23約束違反ERROR_MESSAGE“主鍵重復(fù)ID10 已存在”42類型不匹配WARNING_MESSAGE“部門編號(hào)必須為整數(shù)請(qǐng)重新輸入”22數(shù)值溢出ERROR_MESSAGE“薪資計(jì)算溢出當(dāng)前值超出 INTEGER 范圍”427008表或列不存在PLAIN_MESSAGE“SQL 錯(cuò)誤 7008未找到表 JLU.TEMPL”這種分級(jí)不是炫技而是答辯時(shí)評(píng)委問“你怎么知道這是約束錯(cuò)誤而不是網(wǎng)絡(luò)錯(cuò)誤”的標(biāo)準(zhǔn)答案來源。3. 關(guān)鍵模塊實(shí)現(xiàn)從 Connection 初始化到 GUI 事件響應(yīng)的完整鏈路本章聚焦任務(wù) 4GUI 化 labupdate.java和任務(wù) 5TEMPL 表增刪改查 GUI的落地實(shí)現(xiàn)。這兩個(gè)任務(wù)是整個(gè)實(shí)驗(yàn)的承上啟下節(jié)點(diǎn)任務(wù) 4 驗(yàn)證 JDBC 邏輯能否脫離命令行穩(wěn)定運(yùn)行任務(wù) 5 則檢驗(yàn)是否真正理解“數(shù)據(jù)庫對(duì)象全路徑”“事務(wù)邊界”“空值語義”三大核心概念。以下代碼均經(jīng) DB2 v11.5 JDK 8 實(shí)測(cè)通過參數(shù)、路徑、類名與實(shí)驗(yàn)原始環(huán)境嚴(yán)格對(duì)齊。3.1 Connection 初始化與驅(qū)動(dòng)加載為什么 Class.forName 必須放在 getConnection 里實(shí)驗(yàn)原文中任務(wù) 3 和任務(wù) 8 都要求Class.forName(COM.ibm.db2.jdbc.app.DB2Driver)但很多同學(xué)把它寫在 main 方法開頭導(dǎo)致多次運(yùn)行時(shí) ClassLoader 重復(fù)加載驅(qū)動(dòng)報(bào)SQLCODE-440函數(shù)未找到若 GUI 程序有多個(gè)入口如插入/更新/查詢?nèi)齻€(gè)按鈕每個(gè)按鈕都執(zhí)行一次forName驅(qū)動(dòng)注冊(cè)混亂。正確做法是將其作為getConnection()的前置步驟并加try-catch封裝// DBUtil.java public static Connection getConnection() throws SQLException { // 驅(qū)動(dòng)僅加載一次避免重復(fù)注冊(cè) if (!isDriverLoaded) { try { Class.forName(COM.ibm.db2.jdbc.app.DB2Driver); isDriverLoaded true; } catch (ClassNotFoundException e) { throw new RuntimeException(DB2 JDBC Driver not found in classpath, e); } } return DriverManager.getConnection(jdbc:db2:sample, db2admin, db2admin); } private static boolean isDriverLoaded false;注意DB2 的 JDBC URL 格式為jdbc:db2:sample無冒號(hào)后 host/port這是實(shí)驗(yàn)環(huán)境限定。若擅自改成jdbc:db2://localhost:50000/sample會(huì)報(bào)SQLCODE-1013連接拒絕因?yàn)閷?shí)驗(yàn)用的是 DB2 的本地嵌入式模式非網(wǎng)絡(luò)服務(wù)模式。3.2 單行插入實(shí)現(xiàn)如何安全構(gòu)造 INSERT 語句并防止 SQL 注入任務(wù) 5 要求“模仿截圖設(shè)計(jì)單行插入”但截圖未提供字段列表。根據(jù)JLU.TEMPL表在任務(wù) 1 中與EMPLOYEE關(guān)聯(lián)的上下文以及 DB2 SAMPLE 數(shù)據(jù)庫典型結(jié)構(gòu)我們推定其字段為(ID INT, NAME VARCHAR(50), DEPT VARCHAR(20), SALARY DECIMAL(10,2))。使用PreparedStatement是唯一安全方式// InsertPanel.java private void doInsertSingle() { try { String idStr JOptionPane.showInputDialog(請(qǐng)輸入員工ID); String name JOptionPane.showInputDialog(請(qǐng)輸入姓名); String dept JOptionPane.showInputDialog(請(qǐng)輸入部門); String salaryStr JOptionPane.showInputDialog(請(qǐng)輸入薪資); // 類型校驗(yàn) int id Integer.parseInt(idStr.trim()); BigDecimal salary new BigDecimal(salaryStr.trim()); String sql INSERT INTO JLU.TEMPL (ID, NAME, DEPT, SALARY) VALUES (?, ?, ?, ?); try (Connection conn DBUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { pstmt.setInt(1, id); pstmt.setString(2, name); pstmt.setString(3, dept); pstmt.setBigDecimal(4, salary); int rows pstmt.executeUpdate(); JOptionPane.showMessageDialog(null, String.format(插入成功影響 %d 行, rows), 操作完成, JOptionPane.INFORMATION_MESSAGE); } } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, 輸入格式錯(cuò)誤ID 和薪資必須為數(shù)字, 數(shù)據(jù)格式錯(cuò)誤, JOptionPane.WARNING_MESSAGE); } catch (SQLException e) { handleSQLError(e); // 調(diào)用任務(wù) 7 的異常處理器 } }關(guān)鍵點(diǎn)說明try-with-resources自動(dòng)關(guān)閉PreparedStatement和Connection避免連接泄漏setBigDecimal替代setDouble防止浮點(diǎn)精度丟失DB2 的 DECIMAL 類型不接受 doublehandleSQLError(e)是任務(wù) 7 的統(tǒng)一異常處理器見 3.4 節(jié)。3.3 多行插入實(shí)現(xiàn)批處理不是“循環(huán) executeUpdate”而是 setBatch executeBatch任務(wù) 5 的“多行插入”若用循環(huán)調(diào)用executeUpdate每行都是一次網(wǎng)絡(luò)往返100 行就是 100 次 round-tripDB2 會(huì)報(bào)SQLCODE-904資源不可用。必須用批處理// InsertPanel.java private void doInsertBatch() { try { String input JOptionPane.showInputDialog( 請(qǐng)輸入多行數(shù)據(jù)格式ID,NAME,DEPT,SALARY每行一組用換行分隔\n 示例\n101,張三,IT,8000.00\n102,李四,HR,7500.00 ); if (input null) return; String[] lines input.split(\n); String sql INSERT INTO JLU.TEMPL (ID, NAME, DEPT, SALARY) VALUES (?, ?, ?, ?); try (Connection conn DBUtil.getConnection(); PreparedStatement pstmt conn.prepareStatement(sql)) { conn.setAutoCommit(false); // 批處理必須關(guān)自動(dòng)提交 for (String line : lines) { line line.trim(); if (line.isEmpty()) continue; String[] fields line.split(,); if (fields.length ! 4) { throw new IllegalArgumentException(每行必須包含4個(gè)字段用逗號(hào)分隔); } pstmt.setInt(1, Integer.parseInt(fields[0].trim())); pstmt.setString(2, fields[1].trim()); pstmt.setString(3, fields[2].trim()); pstmt.setBigDecimal(4, new BigDecimal(fields[3].trim())); pstmt.addBatch(); // 加入批處理隊(duì)列 } int[] results pstmt.executeBatch(); // 一次性執(zhí)行 conn.commit(); // 手動(dòng)提交 int total Arrays.stream(results).sum(); JOptionPane.showMessageDialog(null, String.format(批量插入完成共插入 %d 行, total), 操作完成, JOptionPane.INFORMATION_MESSAGE); } } catch (Exception e) { JOptionPane.showMessageDialog(null, 批量插入失敗 e.getMessage(), 錯(cuò)誤, JOptionPane.ERROR_MESSAGE); // 此處不 handleSQLError因批處理異常需整體回滾 } }參數(shù)說明pstmt.addBatch()不執(zhí)行 SQL只是緩存參數(shù)pstmt.executeBatch()返回int[]每個(gè)元素是對(duì)應(yīng)語句影響行數(shù)-3表示執(zhí)行失敗conn.setAutoCommit(false)是批處理前提否則每addBatch都會(huì)隱式提交。3.4 異常分級(jí)處理器handleSQLError 的 4 種 SQLState 分支實(shí)現(xiàn)任務(wù) 7 要求“以對(duì)話框提示所有違反約束、類型不匹配、溢出等錯(cuò)誤”核心是getSQLState()的解析。DB2 的 SQLState 是 5 位字符串前兩位標(biāo)識(shí)錯(cuò)誤大類// DBUtil.java public static void handleSQLError(SQLException e) { String sqlState e.getSQLState(); int errorCode e.getErrorCode(); String message e.getMessage(); String title 數(shù)據(jù)庫錯(cuò)誤; String content 未知錯(cuò)誤 message; int messageType JOptionPane.ERROR_MESSAGE; if (sqlState.startsWith(23)) { // 約束違反 title 數(shù)據(jù)約束錯(cuò)誤; content 違反約束 message; messageType JOptionPane.ERROR_MESSAGE; } else if (sqlState.startsWith(22)) { // 數(shù)據(jù)異常溢出、類型不符 if (errorCode -413 || errorCode -802) { // 溢出典型碼 content 數(shù)值溢出 message 請(qǐng)檢查薪資等數(shù)值范圍; } else { content 數(shù)據(jù)格式錯(cuò)誤 message; } messageType JOptionPane.WARNING_MESSAGE; } else if (sqlState.startsWith(42)) { // 語法或?qū)ο箦e(cuò)誤 if (errorCode -204) { // 對(duì)象未找到 content 數(shù)據(jù)庫對(duì)象不存在 message 請(qǐng)檢查表名是否為 JLU.TEMPL; } else { content SQL 語法錯(cuò)誤 message; } messageType JOptionPane.PLAIN_MESSAGE; } else if (sqlState.startsWith(08)) { // 連接錯(cuò)誤 content 數(shù)據(jù)庫連接失敗 message; messageType JOptionPane.ERROR_MESSAGE; } JOptionPane.showMessageDialog(null, content, title, messageType); }此方法被所有數(shù)據(jù)庫操作調(diào)用確保任務(wù) 7 的驗(yàn)收點(diǎn) 100% 覆蓋。例如任務(wù) 1 中的DB2ADMIN.TEMPL錯(cuò)誤觸發(fā)errorCode-204彈出“數(shù)據(jù)庫對(duì)象不存在”提示而非籠統(tǒng)的“SQL Exception”。3.5 字段級(jí)編輯器如何實(shí)現(xiàn)“任意行任意列”的安全修改任務(wù) 8 要求“對(duì)結(jié)果集中任意行、任意列的修改操作”這需要突破ResultSet的只讀限制。DB2 的ResultSet默認(rèn)是TYPE_FORWARD_ONLY和CONCUR_READ_ONLY必須顯式聲明可更新// QueryPanel.java private void loadStaffData() { try { String sql SELECT ID, NAME, DEPT, SALARY FROM JLU.STAFF; try (Connection conn DBUtil.getConnection(); // 關(guān)鍵聲明可更新結(jié)果集 PreparedStatement pstmt conn.prepareStatement( sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)) { ResultSet rs pstmt.executeQuery(); // 將 ResultSet 轉(zhuǎn)為可編輯表格模型此處省略 Swing TableModel 實(shí)現(xiàn) // 編輯后調(diào)用 rs.updateXXX 和 rs.updateRow() } } catch (SQLException e) { handleSQLError(e); } }更新邏輯示例假設(shè)用戶在表格中修改了第 3 行的 SALARY 列// 在表格編輯器的 save 按鈕事件中 public void onSaveEdit(int rowIndex, int columnIndex, Object newValue) { try { // 移動(dòng)到目標(biāo)行注意ResultSet 行號(hào)從 1 開始 rs.absolute(rowIndex 1); // Swing 行號(hào)從 0ResultSet 從 1 switch (columnIndex) { case 0: rs.updateInt(ID, (Integer) newValue); break; case 1: rs.updateString(NAME, (String) newValue); break; case 2: rs.updateString(DEPT, (String) newValue); break; case 3: rs.updateBigDecimal(SALARY, (BigDecimal) newValue); break; } rs.updateRow(); // 真正寫入數(shù)據(jù)庫 JOptionPane.showMessageDialog(null, 更新成功, 操作完成, JOptionPane.INFORMATION_MESSAGE); } catch (SQLException e) { handleSQLError(e); } }提示“任意行任意列”的本質(zhì)是ResultSet.absolute()updateXXX()updateRow()三步閉環(huán)。漏掉absolute()會(huì)導(dǎo)致更新第一行漏掉updateRow()則內(nèi)存修改不落庫——這正是任務(wù) 3 中“update 成功但無效”的翻車現(xiàn)場(chǎng)。4. 避坑指南8 個(gè)任務(wù)中最容易翻車的 5 個(gè)致命點(diǎn)及修復(fù)方案實(shí)驗(yàn)報(bào)告里寫的“解決辦法”往往過于簡(jiǎn)略比如“將 TEMPL 改成 JLU.TEMPL”但沒說清為什么。以下是我在某高校數(shù)據(jù)庫實(shí)驗(yàn)室?guī)Ы虝r(shí)學(xué)生踩坑率超 70% 的 5 個(gè)高頻致命點(diǎn)按“現(xiàn)象→原因→解決”結(jié)構(gòu)給出可立即執(zhí)行的修復(fù)動(dòng)作。4.1 現(xiàn)象運(yùn)行 labstaff.java 報(bào)錯(cuò) “DB2ADMIN.TEMPL is an undefined name”原因DB2 中對(duì)象名解析規(guī)則是schema.tableTEMPL是別名alias而JLU.TEMPL是全路徑。實(shí)驗(yàn)環(huán)境已創(chuàng)建JLUschema但未將TEMPL別名綁定到該 schema 下或別名指向了其他表。DB2ADMIN用戶默認(rèn) schema 是DB2ADMIN所以DB2ADMIN.TEMPL查無此表。解決用db2 connect to sample user db2admin using db2admin登錄執(zhí)行db2 list tables for schema JLU確認(rèn)TEMPL是否在 JLU schema 下若不在刪除舊別名db2 drop alias DB2ADMIN.TEMPL重建別名db2 create alias JLU.TEMPL for JLU.EMPLOYEE假設(shè)源表是 EMPLOYEE代碼中所有TEMPL統(tǒng)一改為JLU.TEMPL。4.2 現(xiàn)象labupdate.java 執(zhí)行 update 后DB2 命令行查不到變化原因setAutoCommit(false)后未調(diào)用conn.commit()事務(wù)處于掛起狀態(tài)。conn.close()會(huì)自動(dòng) rollback導(dǎo)致所有修改丟失。這是事務(wù)機(jī)制的基本約束不是 Bug。解決在executeUpdate()后、closeQuietly()前必須插入conn.commit()更穩(wěn)妥的做法是用try-catch-finallytry { pstmt.executeUpdate(); conn.commit(); // 成功則提交 } catch (SQLException e) { conn.rollback(); // 失敗則回滾 throw e; }4.3 現(xiàn)象JOptionPane 輸入數(shù)字后程序崩潰報(bào) NumberFormatException原因JOptionPane.showInputDialog()返回String可能含空格或空字符串直接Integer.parseInt(input)會(huì)炸。而SQLException捕獲器只管數(shù)據(jù)庫異常管不了這個(gè)。解決所有輸入解析前加三重防護(hù)String input JOptionPane.showInputDialog(輸入ID); if (input null || input.trim().isEmpty()) { JOptionPane.showMessageDialog(null, 輸入不能為空); return; } try { int id Integer.parseInt(input.trim()); // trim() 去空格 } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, 請(qǐng)輸入有效整數(shù)); return; }4.4 現(xiàn)象多行插入時(shí)部分行成功、部分行失敗但程序不報(bào)錯(cuò)原因executeBatch()返回int[]其中-3表示該條語句失敗但若不檢查返回值就認(rèn)為全部成功。DB2 批處理默認(rèn)是“繼續(xù)執(zhí)行模式”一條失敗不影響后續(xù)。解決必須遍歷executeBatch()返回?cái)?shù)組int[] results pstmt.executeBatch(); for (int i 0; i results.length; i) { if (results[i] Statement.EXECUTE_FAILED) { JOptionPane.showMessageDialog(null, String.format(第 %d 行插入失敗, i 1)); } }4.5 現(xiàn)象GUI 程序啟動(dòng)后點(diǎn)擊按鈕無響應(yīng)或彈窗一閃而逝原因Swing 是單線程模型所有 GUI 更新必須在 Event Dispatch ThreadEDT中執(zhí)行。若數(shù)據(jù)庫操作耗時(shí) IO寫在ActionListener的actionPerformed中會(huì)阻塞 EDT導(dǎo)致界面凍結(jié)。解決用SwingWorker將耗時(shí)操作移出 EDTnew SwingWorkerVoid, Void() { Override protected Void doInBackground() throws Exception { doInsertSingle(); // 耗時(shí)的 JDBC 操作 return null; } Override protected void done() { // 回到 EDT可安全更新 GUI JOptionPane.showMessageDialog(null, 完成); } }.execute();5. 驗(yàn)收與答辯用三張表、兩個(gè)技巧、一次全流程演示拿下滿分答辯不是講原理是證明“我的程序能跑、能改、能抗壓”。我?guī)н^的某圖像處理 Demo 項(xiàng)目A 同學(xué)準(zhǔn)備了 20 頁 PPT 講 JDBC 架構(gòu)結(jié)果評(píng)委只問了 3 個(gè)問題“你改過表結(jié)構(gòu)嗎”“空值顯示對(duì)了嗎”“輸錯(cuò)密碼會(huì)彈什么”——他全答錯(cuò)了。從此我定下鐵律答辯驗(yàn)收只看三張表、兩個(gè)技巧、一次全流程演示。下面逐項(xiàng)拆解。5.1 驗(yàn)收三張表覆蓋所有任務(wù)的硬性輸出物清單這三張表不是讓你打印出來交而是作為你本地驗(yàn)證的 checklist。每張表對(duì)應(yīng)一類驗(yàn)收維度缺一不可。表名用途檢查方式達(dá)標(biāo)標(biāo)準(zhǔn)功能覆蓋表驗(yàn)證 8 個(gè)任務(wù)是否全部實(shí)現(xiàn)運(yùn)行每個(gè)任務(wù)對(duì)應(yīng)類截圖保存每個(gè)任務(wù)至少 1 張成功運(yùn)行截圖含 GUI 界面和彈窗內(nèi)容如“插入成功影響 1 行”異常覆蓋表驗(yàn)證任務(wù) 7 的異常分級(jí)是否完備對(duì)每個(gè)任務(wù)主動(dòng)觸發(fā) 1 種錯(cuò)誤- 任務(wù) 5輸重復(fù) ID約束- 任務(wù) 5輸字母 ID類型- 任務(wù) 3輸 20 導(dǎo)致溢出- 任務(wù) 5輸非法 SQL 符號(hào)如;每種錯(cuò)誤必須彈出對(duì)應(yīng) JOptionPane標(biāo)題、圖標(biāo)、文案與 3.4 節(jié)handleSQLError定義完全一致數(shù)據(jù)一致性表驗(yàn)證數(shù)據(jù)庫真實(shí)狀態(tài)是否同步用 DB2 命令行執(zhí)行db2 connect to sample→db2 select * from JLU.TEMPLGUI 插入/更新后的數(shù)據(jù)必須與 DB2 命令行查詢結(jié)果逐字節(jié)一致包括空值顯示為“空”提示很多同學(xué)截圖只截 GUI不截 DB2 命令行驗(yàn)證結(jié)果。評(píng)委只要求看一張圖“你點(diǎn)確認(rèn)后庫里真有這條數(shù)據(jù)嗎”——所以每張功能截圖旁必須附一張 DB2 查詢截圖二者 ID/NAME/SALARY 完全對(duì)應(yīng)。5.2 答辯兩個(gè)技巧用“對(duì)比演示”和“故意出錯(cuò)”掌控節(jié)奏評(píng)委最怕聽空話最喜歡看對(duì)比。兩個(gè)技巧直擊要害技巧一對(duì)比演示——同一操作展示“改前 vs 改后”不要說“我實(shí)現(xiàn)了空值顯示”而是第一步在 DB2 中手動(dòng)插入一行INSERT INTO JLU.TEMPL VALUES (999, NULL, TEST, NULL)第二步運(yùn)行你的查詢功能截圖彈窗——顯示999 空 TEST 空第三步用原始 labstaff.java未改空值邏輯運(yùn)行同樣查詢截圖彈窗——顯示999 null TEST null結(jié)論“看這就是我做的空值歸一化不是改顯示是改邏輯?!奔记啥室獬鲥e(cuò)——主動(dòng)暴露一個(gè)低風(fēng)險(xiǎn)錯(cuò)誤再優(yōu)雅修復(fù)在演示任務(wù) 5 多行插入時(shí)故意輸錯(cuò)一行輸入101,張三,IT,8000.00\n102,李四,HR,abc\n103,王五,FIN,9000.00點(diǎn)擊執(zhí)行彈出“數(shù)據(jù)格式錯(cuò)誤請(qǐng)輸入有效數(shù)字”然后說“這里我做了輸入預(yù)校驗(yàn)避免無效數(shù)據(jù)進(jìn)入批處理隊(duì)列防止整批失敗?!痹佥斦_數(shù)據(jù)成功。這比“我寫了完美代碼”可信十倍——你展示了防御性編程思維。5.3 全流程演示腳本5 分鐘內(nèi)完成從啟動(dòng)到故障恢復(fù)的閉環(huán)答辯時(shí)間通常只有 5–8 分鐘必須設(shè)計(jì)一條黃金路徑。我給某高校學(xué)生定制的腳本如下實(shí)測(cè) 4 分 30 秒時(shí)間操作目的話術(shù)要點(diǎn)0:00–0:45啟動(dòng)主程序 → 點(diǎn)擊“查詢 Staff” → 截圖彈窗顯示 5 行數(shù)據(jù)含“空”值證明基礎(chǔ) SELECT 空值處理 OK“這是 JLU.STAFF 表您可以看到姓名為 NULL 的行顯示為‘空’符合任務(wù) 6 要求?!?:45–1:50點(diǎn)擊“插入 TEMPL” → 選“單行” → 輸1000,陳六,DEV,12000.00→ 彈窗“插入成功” → 立即點(diǎn)“查詢 TEMPL” → 截圖顯示新增行證明 INSERT 實(shí)時(shí)查詢閉環(huán)“插入后我立刻查詢新增的 1000 號(hào)員工已在結(jié)果中且薪資顯示為 12000.00精度無損?!?:50–3:00點(diǎn)擊“字段編輯” → 找到 ID1000 行 → 改 SALARY 為15000.00→ 點(diǎn)“保存” → 彈窗“更新成功” → 再查 TEMPL確認(rèn)變?yōu)?15000.00證明任務(wù) 8 字段級(jí)編輯“這是任意列編輯我只改了薪資其他字段不變且實(shí)時(shí)落庫。”3:00–4:15點(diǎn)擊“多行插入” → 輸1001,趙七,QA,11000.00\n1002,孫八,PM,13000.00→ 成功 → 再輸1001,周九,UX,14000.00重復(fù) ID→ 彈出“主鍵重復(fù)”錯(cuò)誤證明異常分級(jí)任務(wù) 7“看重復(fù) ID 觸發(fā)約束錯(cuò)誤用紅色 ERROR 圖標(biāo)提示和類型錯(cuò)誤的黃色 WARNING 嚴(yán)格區(qū)分?!?:15–4:30關(guān)閉程序 → 打開 DB2 命令行 →db2 connect to sample→db2 select * from JLU.TEMPL where ID999→ 截圖顯示三條記錄終極數(shù)據(jù)一致性驗(yàn)證“所有操作都真實(shí)寫入數(shù)據(jù)庫不是內(nèi)存模擬。這是 DB2 原生命令行結(jié)果和 GUI 完全一致?!睆哪且院笪颐看螏W(xué)生答辯都強(qiáng)制走一遍這個(gè)腳本不講架構(gòu)圖不背概念就用這 5 分鐘把評(píng)委眼睛釘在你的屏幕上讓他親眼看到“能跑、能改、能抗壓”。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉人人网| 九九婷婷激情综合网| 99色干| 欧美精产国品一二三区| www.99热在线观看| 永久地址 色| 亚洲春色奇米影视| h在线看免费版在线看| 亚洲综合另类| 六月色丁香婷婷| 久久久精品色| 色播五月天天| 99色色网| 色婷婷五月天激情在线观看| av人人操| 99精品偷自拍| 色色色图| 超碰大香蕉网| 天天色天天| 五月天婷婷色| 五月停停色色丁香| 婷婷九月在线| 五月丁香A∨在线| 婷婷丁香在线| 999热这里只有美国精品| 亚洲国产精品SUV| www999日韩精品| 99热这里只有精品98| 99热精品在线| 思思精品视频| 婷婷婷婷婷开心无码播放| 亚州精品成人片| 色五月婷婷亚洲| 激情综合六月| 狠狠色丁香99| www,欧美干干干干干干| 91一道本| 五月婷婷亚洲综合在线 | 色五月激情综合网站| 99热欧美在线观看| 五月天亚洲图片婷婷| 五月丁香激情综合| 99久久网站| 久久精品人妻| 99热成人| 日本女人久久| 激情综合网五月丁香| 91狠狠色色丁香婷婷综合久久| 99热久| 激情五月五月五月婷婷| 天天色丁香| 久久久潮喷-久久久九九-成人AV| 超碰免费在线| 二色av| 91婷婷五月天嫩女| 深爱五月婷婷| 激情综合网五月丁香| 99综合免费视频| 色哟哟性爱av| 亚洲热视频| 精品成人a v无码内射| 五月婷婷黄| 婷婷酒色网| 991自拍视频| 91在线97视频| 久久久久婷| 91操在线| 99久久九九| 婷婷久久五月| 九九久久99| 久久婷婷五月综合色播| 26uuu成人网| 超碰在线50| 久久ab| 久久性爱视频| 婷婷天天日婷婷| 九九精品re免费视频| 欧美三级黄色片久久| 激情九月综合| 久久婷婷五月国产色综合激情| 爱久久小说下载网| 天天噜天天爱| 五月丁香六月停停| 色五月天综合网| 涩五月色婷婷| 91超碰九色| 九九久久五月天| 亚洲不卡| 欧美电影在线观看| 色五月婷婷五月天激情综合| 丁香六月婷婷基地| 婷婷黄色五月| 婷婷五月天成人导航| 九色视频入口91| 人妻视频一区而且二区| AV人人操| 91狠狠色丁香婷婷综合久久| 五月丁香六月情| 激情六月色| 婷婷五月色综合香五月| 精品国产人人爱人人| 26uuu色五月| 婷婷精品| 思思国产99| 开心激情综合| 欧美久久婷婷| 人人操人| 日本久久极品| 亚洲AV网站| 丁香六月婷婷综合色| 国产亚洲99久久精品熟女| 天天干一干| 婷婷五月丁香青青草在线| 另类小说色婷婷| 欧美大片免费播放器| 日日撸夜夜操| 99热久97| 亚洲国产成人裸舞| 久久99热这里只有| 五月天亭亭俺也| 人人干av| 婷婷大乡焦噜噜| 欧美日本VA| 亚洲婷婷乱乱丁香| 人妻久久久| 六月丁香激情| 五月天停停基地| 97碰碰在线观看视频| WWW,婷婷,COM| 亚洲字幕AV一区二区三区四区| 久热这里只有精品6官网亚洲| 伊人久久大香线蕉AV最新午夜| 久99婷婷色综合| 久久久97| 在线播放中文字幕| 黄色五月婷婷| 婷婷丁香色性爱| 久久亚洲色导航| 丁香六月婷婷五月婷婷| 另类激情综合| 成年人夜夜喷水| 五月婷婷丁香大陆免费| 丁香六月久| 九九在线视频| 五月丁香| 直接看的av| 日本操B片| 激情综合网五月天天| 五月激情婷婷六月丁香| 五月天丁香综合久久国产| 亚洲欧美婷婷五月色综合| 99热精品中文字幕| 色婷五月婷婷| AA片在线观看视频在线播放| 婷婷丁香五月激情密臀av| 深爱激情五月天| 色婷婷呢狠禁久禁| 丁香五月天天日| 五月丁香婷婷久久| 国产成人AV在线播放| 丁香婷婷性久久| 99热精品综合| 无码 av电影| 九九家庭影院| 三十熟女| 无码婷婷五月天| 免费无码毛片一区二区A片 | 91热爆在线| 日韩啊啊啊| 99热人人艹| 五月丁香av在线| 激情五月综合| 亚洲AV成人无码久久精品老人法拉利| 激情综合另类| 欧美精产国品一二三区| 人人操婷婷| 六月婷婷七月丁香| 九九色情网五月天| 婷婷五月天综合在线| 久久五月视频| 精品无码久久久久久久久| 9婷婷内射| 五月激情六月综合| 91超碰人人操| 亚洲婷婷性爱| yellow视频在线观看91| 国产jd1024基地手机看国产| 成人色站,在线视频,看片-SS1AV| 九九99免费视频| 国产第99页| 99热这里只有精品99| 国产精品99久久久久久久女警 | 1024在线视频| 99无码精品| www,com,五月色色| 熟女激情网| 亚洲三A| 五月丁香六月婷婷久久久综合| 日本色婷婷| 国产伦理精品高清在线观看网站一区二区 | 五月天淫乱视频| 婷婷五月综激情| 九九热99免费视频| 色婷婷六月精品| 黄色av网站在线免费播放| 99无码免费视频| 亚洲网在线观看| 国产26uuu| 丁香五月欧美成人| 婷婷五月天久| 99国产精品久久久久久久久久久| 五月婷婷丁香深深爱| 亚洲精品视频在线播放| 99re熱| www.97视频| 五月狠狠| 国产亚洲精品AAAAAAA片| 久久久香| 久热A片| 91九色国产熟女| 色婷五月婷婷| 激情六月丁香| 亚洲激情| 久久综合站| 亭亭色色五月天| 五月天婷婷伊人| 五月婷婷婷| 九九亚洲视频| 欧美综合五月丁香六月婷| 日本人妻操| 婷婷五月色播| 色碰碰视频| 丁香五月婷婷久久久| 看片视频在线免费日产在线看| 亚洲日比视频| 婷婷热婷婷色| 六月丁香大香蕉| 久草热8精品视频在线观看| 色综合久久天天综合网| 99热免费| 五月丁香啪啪网| 1024操逼视频| 岛国av网站| 深爱开心激情网| 综合久久影院| 九热精品| 任你爽免费视频| 97伦色婷婷| 国产精产国品一二三在观看| 韩国激情五月天综合网| 综合激情网五月激情| 男女啪啪做爰高潮无遮挡| 人妻肉射免费观看| 99性感视频| 九九家庭影院| 婷婷五月欧美综合| 91色婷婷综合久久中文字幕二区| 深夜婷婷五月丁香| 天天爱天天做综合| 99re热视频| 蜜桃婷婷丁香五月天狠狠久久综合| 超碰在线免费观看日韩| 日本九九视频| 亚洲欧洲午夜成人精品av| 这里只有精品在线视频精品| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 91碰碰碰| 青青久在线视频免费观看| 色播播五月| 久久久久人妻精选| 天堂草在线看www| 9这里只有精品| 九九九九九无码| 亚洲热手机在线观看| 五月婷婷丁香大陆免费| 日韩肏屄网| 97超碰免费超级在线观看| h在线看免费版在线看| 婷婷5月色| 99热国产国产| RenRenSe在线视频网站| 日韩婷婷| www.五月激情.com| 99国产小视频| 日韩黄色电影| 91viP在线看| 亚洲精品99| 日本久久网| 激情综合网五月天| 四川BBB搡BBB爽爽视频| 亚洲热视频| 综合色久| 美女被肏网站在线看| 亚洲中文字幕网| 婷婷五月天丁香| 这里只有精品视频222| 国产精品18久久久| 中文字幕性爱视频| 天天干,天天舔| 日本色噜| 五月激情久久综合网| 伍月婷婷免费视频| 五月天伊人综合| 亚洲色频| 色婷婷99| 99亚洲精品综合在线| 六月激情久久婷婷| 激情丁香网| 丁香五月天天高清在线| 99热精品9| 丁香六月亭亭久久综合| 森林影视大全,最好看的2019年视频 | 久草视频一,二三四| 五月婷婷丁香六月在线| 五月丁香婷婷AV天堂| 色婷婷成人久久| 色婷婷综合影院| www久| 可以免费观看的av| 日本在线wwww| 99热日韩| 国产综合网在线| 热99这就是精品视频| 日日日日日| www.99成人视频| 日韩成人av在线| 国产3p露脸普通话对白| 亚洲乱码日产精品BD在线观看| 99爱精品| 亚洲一区国产传媒| 99er精品视频| 欧美成人一区二区三区在线视频| 中国女人做爰A片| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 久久99热这里只有精品| 高清无码视频网址| 欧美色婷婷| 黄色99热| 欧美成人A片AAA片在线播放| 99色在线观看视频| 亚洲无码影音| 中文字幕成人| 97色 五月天丁香| 久久99网站| AV五月丁香| 成人在线不卡| 97色图片中文字幕视频在线观看 | 色视频2025| 丁香五月婷婷日本| 大香蕉丁香五月| 婷婷第六色| www.黄色片-久久成人国产精品在线播放-999AV| 大地资源色婷婷视频在线| 色婷婷亚洲婷婷| 色9色| 七七色色综合| 九九99久久| 国精产品一区一区三区免费视频 | 五月天丁香色色| 成人在线视频网| 五月激激激情综合网| 五月色丁香| 天堂婷婷综合| 99热这里只是精品| 蜜臀av 粉嫩av 懂色av| 激情五月天色色| 婷婷色五月开心五月| 色婷婷基地| 日日.c| 噼里啪啦在线观看免费完整版视频| 97精品欧美91久久久久久久| 91色综合久久| 丁香五月精品| 日本道久久91| ji'qi'luan'ren'lun| 99在线精品视频免费观看20| 26uuu国产| 五月天激情图片| 大香蕉天堂| 九热久| 五月婷婷二月丁香| 极品九九九九九九| 国产avapp 网| 色色色婷婷五月天| 深爱五月天| 丁香婷婷综合五月天| 91狠狠色丁香婷婷综合久久精品| 色久99| 熟女激情五月天 | 秋霞日本免费毛片A片| 丁香六月色婷婷欧美| 另类亚洲电影| 91激情五月开心| 五月丁香天天| 婷婷天堂站| 婷婷和五月天| 99热大全在线观看| 综合久久8| 五月丁香综合激情| 久热这里只有精品视频免费观看| 亚洲一级AV在线免费播放| 丁香五月综合激情啪啪| 五月丁香婷婷色播无码| 丁婷婷五月天在线播放| 夜夜撸天天操| 狠狠爱激情网| 久久婷婷五月天激情| 91色在线/日韩| 激情五月天福利| 97婷婷丁香五月| 996er热| 五月丁香婷草| 五月婷婷丁香六月| 久操大屁股女人av| 亚洲色模骚货| wwww.色婷婷| 第一区久久网站| 激情五月天网| 五月www| 91热爆在线| 中文字幕丰满人妻无码专区| 婷婷五月天亚洲色| 无码免费人妻A片AAA毛片西瓜| 九九中文字幕九| 五月婷婷激清网| 国产真实乱对白精彩| 五月激情影视| 九九热精品视频在线观看| 涩五月婷婷| 99亚洲精美视频在线观看| 情欲综合网| 国产精品人成A片一区二区| 亚洲色图日韩网址| 天天干天天干天天| 99在线精品视频| 久婷婷婷| 天天做天天爱天天爽夜夜揉| 激情六月色| 任你搞在线观看视频| WWW五月婷婷| 狠狠爱综合| 亚州激情网站无码| 日韩在线看AV| 五月丁香六月婷婷姐| BBWCUCKOLD精品熟妇| 伊人婷婷大香蕉| 日本天堂免费99| 激情人妻综合| 五月天婷婷丁香| 久久机热这里只有精品免费视频| 涩综合网| 丁香五月天偷拍| 狠狠操天天干| 五月婷视屏在线观看| 久久xx| 伊人干综合| 精品乱码久久久久| 狠狠色狠狠鲁| 日本久久极品| 亚洲综合色婷婷| 伊人影音无码一区二区三区| 热久精品| 五月丁香婷婷色色| 国产婷婷婷| 日本久久极品| 欧美va视频| 天天色天天爽| 97婷婷五月丁香| 人人草人人爱| 亚洲色色图片| 性爱激情久久| 亚洲色久| 丁香六月亚洲综合| 人人摸人人操人人爽| 久久99大全| 青青草原中文字幕| 九九色video| 丁香五月天堂网| 丁香色啪综合| 国产成人AV在线播放| 丁香六月婷婷色XXXXX| 狠狠色综合五月人人| 狠狠色综合777| 久久综合五月婷婷| 国产精品99久久久久久久女警| 色噜噜婷婷| www.一区二区三区| 久久这里有精品| 99热99热99热99热| 五月婷婷在线视频免费观看| 性爱视频久久| 天天操夜夜操| 五月中旬婷婷丁香六| 亚洲婷婷性爱| 丁香五月偷拍| 狠狠色噜噜狠狠狠狠综合| 97婷婷五月激情六月丁香伊人| 成人va在线播放| 秋霞免费三级片| 影音先锋男人av资源站| 国产成人AV在线播放| 激情另类综合| 亚洲成人综合网在线免费观看| 五月丁香六月婷婷国产视频| 色婷婷a v| 国产成人AV不卡| 五月天激情网站| www.夜夜騎夜夜狠| 情婷婷五月天在线| 99久久99九九九99九他书对| 色一情一乱一乱一区91Av| 亚洲激情电影五月天色婷婷丁香一起草| 九九久久高清| 欧美一级a| 九九色影院| 色色色地址| 色五开心五月五月深深爱| 99色久| 综合色、色综合| 五月天.com| 99热综合| 婷婷五月天激情电影小说| 97人人操人人| 狠狠色五月| 久久天堂女人| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 99这里只有免费的小视频在线观看| 极品少妇XXXX精品少妇偷拍| 久9热视频在线观看| 日韩色色小视频| www.99久久久久99| 婷婷五月丁香激情图片 | 激情婷婷五六月天| 六月亚洲婷婷6月中文字幕| 黄色激情网站在线观看| 五月天色丁香| 夜夜撸天天操| 99操逼| 91久久五月天| 亚洲色五月婷婷| www夜夜操comwww| 襙比视频| 久久96热| 99色 色| 五月婷婷婷婷婷婷艺术| 91九色精品熟女内射| 久久久全国免费视频| 欧美99热| 播播网色播播| 99精品网| 午夜不卡久久精品无码免费| 亚洲激情视频在线观看| 丰满熟女人妻一区二区三| 99热99思午夜精品| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 日日婷婷不卡| 思思久久96热在精品国产,| 9精品视频在线观看| 香蕉曰比| 激情久久网| 久久日本wwww色| 亚洲人成网站999综合| 亚洲色网址| 99热这里只有精品8| 五月婷婷之婷婷| 开心五月婷婷| 丁香五月天天高清在线| 激情丁香五月| 日韩无码AV电影网站| 婷婷五月成人| 丁香六月啪| 亚洲V国产V欧美V久久久久久| 少妇高潮一区二区三区99欧美| 国产性爱亚洲是图| 婷婷射综合| 99re8在这里只有精品| 久综合| 五月丁香综合激情| 极品人妻VideOssS人妻| 五月婷婷激情日本| 99热这里有精品| 熟女人妻一区二区三区免费看| 99热在线精品观看| 亚洲深喉aV| 色很久综合| 91久久综合亚洲鲁鲁五月天| 亚洲不卡欧洲| 天天干天天日天天插| 激情综合啪啪啪| 五月丁香伊人网| 色婷婷五月天久久| 色五月婷婷在线| 狠狠插.com| 狠狠综合久久| www国产亚洲色婷婷com| 婷婷丁香五月天欧美| 五月婷俺去也| 久久五月天精品视频| 丁香九月激情久久| 99久久久国产大片区| 亚洲av免费在线| 五月婷婷这里都是精品| 午夜青草资源| 情色五月天网站| 国产精品99久久久久久久女警| Av大香蕉| 67久久| 大香蕉网站,大香蕉综合| 性欧美日本| 五月天激情Av| 中文字幕av久久爽一区| 人人摸人人摸| 91九色成人原创视频| 激情久久综合网| site:hcxsz888.com| 色五月xxx| 五月丁香六月婷婷无码| 九九热视频在线观看| 亚洲另类久久| 婷婷色五月丁香六月欧美啪| 九月婷婷在线视频| 99精品视频免费观看| 日韩欧美颜射| 婷婷五月娱乐在线| 91精品综合久久婷婷九色| 96色婷婷| 五月丁香婷色| 激情六月综合| 免费看成人747474九号视频在线观看| 99色色最新视频| 日韩综合天堂| 夜夜爱爱亚洲| 日日撸日日操| 五月天淫乱视频| 国产精品国产VA片国产| 五月丁六月婷| 99ri视频| 人妻九九九九| 五月丁香婷婷网在线在线| 亚洲成人免费在线| 五月丁香五月丁香五月丁香五月丁香91| 婷婷五月深深的爱| 五月婷在线观看| 五月天丁香欧美激情| 欧洲亚洲免费视频9| 免费99情趣网视频| 亚洲色五月| 欧美日韩国产一区| 五月婷婷之综合激情| 性爱综合网| 涩九九九九| 亚洲色爱综合| 色yeye欧美| 丁香五月天欧美在线| 婷婷在线视频| 欧美亚洲成人在线| 色亭亭五月天丁香综合AV - 百度 - 百度| 影音先锋91在线资源站| 色婷婷免费视频| A久久| 婷婷五月丁香激情图片| 人妻性爱av网站| 97精品综合久久| 婷婷免费无马| 亚洲精品成人| 日韩黄黄| 涩综合婷婷| 狠狠舔| 色五月婷婷影院| 玖玖爱综合网| 91热爆在线| 九九色院| 丁香花五月天激情| 五月色婷| www.夜夜| 天天激情视频| 4438亚洲欧美| 国产婷婷五月天| 超碰啪啪网| 五月激情五月婷婷五月天在线| 激情小说视频图片| 丁香婷婷久久| 国产成人精品一区二三区熟女在线| 人妻久久婷婷| 丁香色婷婷| 婷婷激情丁香五月天综合| 天天爽天天操| 色婷婷狠狠18禁| 九九热精品| 亚洲精品操一操、噜一噜、摸一摸、爽 | 日韩五月天婷婷| 欧美午夜乱妇午夜福利| 色婷婷色五月另类综合| 狠狠撸激情综合丁香五月天俺来啦| 这里只有精品免费观看网占| 激情综合网五月婷婷| 久超超碰| 99激情| 久久九九99字幕| 丁J香六月首页| 99在线精品视频| www色色色com| 日逼AV影音先锋男人资源站| 九月婷婷久久久| 午夜大香蕉| 丁香色情五月综合网站| 少妇AB又爽又紧无码网站| 97婷婷丁香五月综合| 久久人人人人妻| 激情婷婷网| 五月婷婷黄色| 开心五月天私房婷婷| 翔田千里 50岁 无码| 色婷婷情片| 99热这里只有精品首页| 久久99久久久久久| 91久久日日| 色婷婷精品视频| 亚洲激情丁香五月天色| 9色在线| 久狠日av| 色情五月综合婷婷| www五月婷婷88导航| 久香草视频在线观看| 人妻丰满精品一区二区A片| 思思热99er在线视频| 99热免费| 五月丁香婷婷网在线在线| 激情九色| 人妻熟女一区二区AV| 天天色,天天操,天天射| 97超美国视频在线观看| 婷婷五月丁香伊人| 五月天天天综合| 91xxxx九色| 婷婷五月天激情网| 久色| 丁香五月网在线观看| 婷婷五月丁香色色| 激情六月天| 亚洲精品永久久久久久| 国产精典视频在线观看| 五月丁香久久网| 淫荡综合网| 日韩欧美五月丁综合| 久久99热这里只频精品6学生| www..com色爱| 色婷婷网| 五月婷婷日| 乱乱av| 色五月综合激情| 五月情色天| 桃色激情婷婷伊人网| 国产无遮挡又黄又爽免费网站| 婷婷激情五月综合丁香社| 97人妻人人| 亚洲V国产V欧美V久久久久久| 天天情色五月天| 丁香五月婷婷五月天在线| 超碰日韩人妻在线| 91久操| 五月婷婷熟女| 丁香五月天狠狠| 婷婷六月天亚州| 国语对白性爱视频播放| 无码字幕中文| 国产欧美熟妇另类久久久| 色婷精品91| 综合99视频| 99免费视频网| 激情五月com| 日日干日日色| 亚洲五月天色| 另类A片| 久热丁香| 九月丁香八月婷婷久久综合久97| 五月婷久久| 六月丁香网| 五月天婷婷视频| 丁香五月第四色88| 六月色五月天天婷婷| www,com,五月色色| 97碰碰人人视频| 草榴视频黄色网| 人妻丰满精品一区二区A片| 99久久激情视频| 丁香五月婷婷婷婷欧美综合| 国洲夜色亚热在线久久| www.夜夜操| 九色婷婷| 天天插天天干| 极品人妻VIDEOSSS人妻| 五月婷婷亚洲| 婷婷伊人综合中文字幕| 丁香五月婷婷综合网| 婷婷五月色播网| www色色com| 婷婷综合激情| 天天色·欧美| 综合逼五月激情婷婷| AV操逼网| 色五月丁香五月| 另类天堂| 新99色色色色色色| 五月激情婷婷色| 五月丁香六月停停| 丁香五月婷婷色播艳门照| 欧美狠狠一在草| 亚州激情在线视频| 五月婷在线色视频| 天天色域综合网| 97色色色色色| 五月天婷婷基地| 国产.亚洲.欧洲视频在线| 夜夜做夜夜愛| 六月丁香婷婷综合在线| 伊人9999| 丁香五月天成人网站| 天天色天天爱天天爽| 成人婷婷色五月天| 日韩精品无码99| 5月丁香婷婷激情网| 婷婷五月天激情五月天网站| 色五月激情五月丁香五月婷婷啪啪综合 | 色婷婷婷av| 激情五月婷婷在线区| 激情综合在线观看| 7超碰自拍| 99久久99热| 五月丁香婷在线| 色五月婷婷亚洲最大| 99热这里只有精品4| 亚洲婷婷免费| 国产欧洲欧洲精品久久| 深爱激情五月网| 九月激情婷婷丁香| 久99久精品视频| 五月情婷婷五月| 五月婷婷丁香五月婷婷丁香| 色婷婷久久综合中文久久一本| www,五月天激情| 99久久五月婷婷| 91狠狠色丁香婷婷综合久久| 亚洲1区| 少妇被下春药玩弄A片| 专区无日本视频高清8| 91操碰| 色婷婷狠狠禁久久| 大香蕉五月丁香| 婷婷五月天激情视频| 狠狠草综合网| 久久婷婷五月综合伊人| 99在线观看视频| 亚洲愉拍99热成人精品| 热热色色五月天婷婷| 婷婷丁香成人色综合| 久久这里只有精品视频15 | 热九九精品| 亚洲激情四射色| 成人五月天丁香婷| 色婷婷色情| 成人在线综合| 婷婷欠久少妇| 日韩亚洲视频| 欧美日韩aaaa| 六月婷婷五月丁香| 婷婷五月a| 婷婷色色综合激情| 国产性爱亚洲是图| 99在线免费视频| 久热99热| 久狠日av| 久久九九综合| 五月天婷婷基地综合网| 亚洲黄色影视| 能看的av片| 97啪啪| 九月婷婷激情久久| 五月视频日本免费观看| 青青草原福利在线| 涩五月婷婷| 在线观看av网站| 五月婷婷久草在线视频综合| 婷婷伊人久久| 国产熟女日日骚五月丁香爱| 天天做天天摸| 国产人妻人伦精品一区二区| 丁香深五月婷婷| 中文婷婷狠狠| 婷婷综合五月激情| 国产激情综合| 六月丁香婷婷五月天| 色婷婷激情五月天在线观看| 9久久婷婷国产综合精品性色| 色5月婷婷| 色九区| 激情五月综合网最新| 夜夜嗨一区二区三区直播内容| 久久天堂| 99热这里只有精品8| 五月婷视频| 人妻自慰在线| 丁香五月婷婷五月| 五月婷婷综合网| 99久久久免费| 无码区婷婷五月花开| 亚洲男人的天堂婷婷色五月| 影音先锋一区二区三区| 9视频在线成人网站| 丁香五月婷婷超碰在线| 五月婷婷开心综合| 色情成人五月天| 欧美3AaAa大片| a性生活久久无| 开心五月丁香啪| 日本精品人妻无码77777| 综合久久97| 亚洲综合网 665566| 99久久喉9| 欧美狠狠地| 91人无码久久久久久| 日韩草草草草草草草草草草草草| 无码髙清| 五月色婷婷影院| 婷婷丁香成人| 久久这里精彩免费在线观看| 激情综合激情综合| 懂色av蜜臀av粉嫩av永陈冠希| 色色日韩无码| 国产色色视频| 五月丁香性爱| 日本丁香五月| 99热在线极品极品| 99综合网| 亚洲久热| 激情网开心网| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 色爱终和网| 大香蕉丁香五月| 婷婷丁香小说| 久久婷婷网| 激情五月综合| 99色视频在线观看| 免费在线观看av网站| 色婷婷综合亚洲| 五月丁香六月婷婷国产视频| 成人超碰网| 91精品综合久久久久久五月丁香| 日日躁夜夜躁狠狠久久AV| 26UUU一区二区| 青草视频在线观看视频| 久久小视频免费| 亚洲岛国电影| 1区2区视频| 六月丁香啪啪| 色色三级视频| 日狠狠| 午夜激情婷婷| 婷婷丁香人妻天天久久| 丁香婷婷综合激情五月色| 97操在线视频| 久热 91| 99热国内| se婷97| av在线资源| www.五月婷婷久久.com| 国产成人精品一区二三区熟女在线 | 日本色频| 超碰人人在线观看| 婷婷五月激情欧美| 99re这里只有精品免费| 五月丁香六月激情| 天天天操天天天日| 亚洲综合99| 日本无码专区| 91干在线| 狠狠999| 欧美日韩国产伦精品日韩人妻一| 亭亭色网| 丁香婷婷六月激情综合| 色综合久久888| 综合99在线| 亚洲AV成人在线| 成人av免费观看| 六月色国内综合| 色五月婷婷激情五月| 热99这就是精品视频| 丁香综合久久| 伊人99热| 色色国产| 五月丁香六月合| 色婷婷亚洲| 丁香九月色| 人妻少妇色综合| 久久久噜噜噜久久人妻| 丁香五月另类色婷婷麻豆| www.minyis.com【JT】实力收量可预付QQ2101460746 | 99热这里都是精品| 五月天婷婷激情小说| 西西4r午夜剧场| 亚洲五月花| 色综合色色| 婷婷色播综合五月| 91日本在线观看| 激情婷婷黄色五月| 成人精品视频99在线观看免费| 婷婷六月天亚州| 五月天日日操夜夜操 | 五月丁香色婷婷色| 91夫妻网站九色| 五月婷婷六月激情| 九九热精品99| 欧美va欧美va差| 婷久看人爽| 日本熟妇精品99| 99热一本久道| 99热超碰人| 欧美在线| 五月婷婷色五月| 9久热免费视频99| 婷婷丁香在线播放| 婷婷丁香五月久久| 成人噜噜网| 亚洲免费99| 久热婷婷在线视频| 爱iii做iiii日日| 免费看欧美成人A片无码| 婷婷五月天久久| Jh7Uf088VHafNm| 亚洲性爱干干| 色色99| 97色婷婷五月天| 亚洲无码www| 成人精品网站在线观看| 五月天色丁香| 五月天成人综合| 五月丁香在线| 婷婷九月丁香| 丁香五月亚综合图片| 开心婷婷中文字慕| 久久久91| 五月婷婷三级| 男人天堂99| 色婷天天| 伊人色综合影院视频| 亚洲无码影音| 婷婷欠久少妇| 密着浓厚中出乚交尾GvG935| 六月丁香av| 亚洲欧洲国产精品| 九九re精品视频在线观看| 99成人无码| 亚洲行行色色| 丁香激激情网| 日日夜夜小色哥| 大香蕉院线| 岛国av电影网站| 成人精品99| 99久久久| 免费观看的婷婷五月视频在线| 丁香五月日本| 国产性色蜜乳| 五月综合六月婷婷| 免费视频这里只有精品| 最新热中文字幕| 伊人五月天日日夜夜久久久天天| 超碰在线综合| 欧美天堂久久| 99re99在线看| 九九热视频首页/这里只有精品| 国产精品丝| 久久天堂网| 996热| 婷婷亚洲五| 婷婷五月天影视| 丁香六月天之亚州热女| 五月婷婷六月激情在线| 伊人久久婷婷| 九九热这里都是精品6| 综合久久婷婷| 日日操夜夜爽白洁| 思99热精品久久只有精品| 成人精品一区二区三区四区五区| 91精品国产99久久久久久天美| 激情婷婷丁香色五月| 无码一区精品一区视频| 色私五月婷婷| 激情五月小说婷婷| 久久综合色情网站| av在线婷婷| 五月色丁香婷婷综合| 亚洲经典三级| AV网在线观看| 久久婷婷丁香| 五月天天天综合| 日日操人人操| 少妇性按摩无码中文A片| 欧美α√| 天天操B| 日产精品一线二线三线芒果 | 亚洲激情六月丁香| 天堂在线9| 青草性爱视频| 丁香成人视频| 亚洲操人| 九热视频| 五月伊人视频在线看| 99超在线| 激情五月,婷婷五月,丁香五月| 99热这里只有在线| 婷婷狠狠操| 性一交一乱一交A片久| 亚洲国产精品VA在线看黑人| 色婷婷丁香A片区毛片区女人区| 性做久久久久久久免费看 | 婷婷丁香五月天色区| 狠色狠色狠色狠色狠色网| 五月天色婷婷视频| 超碰高清在线| 五月激情啪啪| 超碰中文字幕在线| 99综合视频在线| 吉澤明步Av一區二區| 舔色婷婷| 亚洲欧洲另类| 伦99热| 色五月丁香激情| 国产成人高清| 99操视频| 任你日视频| 91精品91久久久中77777久久玖玖九九| 懂色av粉嫩av蜜臀av| 精品九九视频| 超碰在线人妻| 99色色爰| 人妻尝试久久久久久久久久久久| 五月婷视屏在线观看| 国产在这里只有精品| 激情99| 99热| 激情综合视频| 夜夜做夜夜愛| 狠狠色综合久久| 成人欧美日韩| 99久久99九九九99九他书对| 99这里有精品视频| 骚五月婷婷| 久久婷五月婷| 色色综合成人网| 3p日韩网站视频| 99精品在线观看视频| 性天堂久久| 六月婷婷综合网2| 大香蕉啪啪啪| 天天日天天干天天操| 欧美操人| 久久婷婷夜| 影音先锋人妻出差| 色婷婷99| 五月丁香婷婷中文| 六月婷婷开心| 久久综合婷婷激情| 五月天天天综合| 国産精品| 日韩伊人大香蕉| 婷婷五月天亚洲丁香| 激情婷婷五月| 77777亚洲午夜久久| 久久视频66| 99ri国产在线| 九九99在线视频| 婷婷丁香五月高清| 五月天大香蕉av| 天天草天天舔| 婷婷久久综合| 色婷久久| 综合久久综合| 香蕉久久国产AV一区二区| 亚洲综合久| 色综合久久伊伊婷婷五月| 九九视频在线观看| 精品国婬伦V无码久久久| 色999五月色| 天堂久久婷婷| 久久亚洲无码| 亚洲精品午夜国产va久久成人| www.zbzhongsen.com| avh片在线观看| 26UUU精品一区二区Com| 日韩综合天堂| 亚洲色图五月丁香| 182TV大香蕉| 大香蕉人人人| 日本久久人| 天天婷婷| 欧美69色| 精a品a| 九九色黄色| 婷婷五月激情视频| 婷婷久久爱| 99精色| 开心五月婷婷综合在线精品素人| 婷婷丁香五月天综合网| 五月天社区婷婷丁香社区| av久热| 婷婷伊人久久| 天天日,天天插| 久热这里只有精品3| 婷婷刺激综合| 婷婷欧美激情综合| 色综合久久88色综合天天99| 91久久18| 另类激情首页| 9l视频自拍9l视频自拍九色学生| 毛片毛片毛片毛片| 丁香六月天婷婷| 日日爽夜夜爽| www.婷婷五月天| 五月激情影视| 亚洲 激情 中文| 色.五月综合网| 色五月丁香伊人| 大香蕉人人人| 99热这里都是精品| 丁香五月天无码AV| 亚洲乱码日产精品BD| 操人91| 欧美电影在线播放| 五月丁香婷婷伊人| wwww.色婷婷| 人人干女人| 99久久99视频只有精品| 久9视频| WWW.五月天9999| 色婷婷很很丝袜| 噜噜狠狠色综无码久久合欧美| 中文字幕丰满乱孑伦无码专区| 思99热精品久久只有精品| 99色综合| 午夜色丁香| 丁香五月激情棕合| 婷婷综合五月天| 丁香五月婷婷色播艳门照| Www.sesese丁香| 超碰成人电影| 岛国AV网| 五月丁香狠狠爱婷婷综合| 人人摸人人操人人爽| 色 五月婷婷基地| 香蕉久久国产AV一区二区| 婷婷五月中文字幕| 开心网五月色婷婷| 影院久久久| 五月天婷婷无码视频| 婷婷五月天激情小说| 天天综合网~91| 亚洲丁香网| 日本91在线播放| 都市激情小说婷婷| 超碰婷婷五月| 婷婷五月天免费视频在线观看| 97精品欧美91久久久久久久| 另类五月激情| 91久久婷婷人人澡草| 99热这里| 欧美色骚婷婷五月天|