java数据库编程——执行查询操作(二)
【0】README
1) 本文部分文字描述和source code 均轉自 core java volume 2 , 旨在理解 java數據庫編程——執行查詢操作(二) 的基礎知識 ;
2) 本文和 java數據庫編程——執行查詢操作(一) 是姊妹篇, 共同組成了 java數據庫編程——執行查詢操作的全部內容, for java數據庫編程——執行查詢操作(一), please visit http://blog.csdn.net/PacosonSWJTU/article/details/50628980 ;
3)for database connection config, please visit : https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter4/database.properties
【1】SQL轉義
1)轉義定義: 轉義語法支持各種數據庫普遍支持的特性, 但是數據庫使用的是與數據庫相關的語法變體, 因此,將轉義語法轉譯為 特定數據庫的語法是JDBC 驅動程序的任務之一。 (干貨——將轉義語法轉譯為 特定數據庫的語法是JDBC 驅動程序的任務之一)
2)轉義主要用于下列特性(Character):
- C1)日期和時間字面常量;
- C2)調用標量函數;
- C3)調用存儲過程;
- C4)外連接;
- C5) 在 like 子句中的 轉義字符;
2.1)應該使用d, t, ts 來表示 DATE, TIME 和 TIMESTAMP的值:
{d, ‘2008-01-24’}
{t, ‘23:59:59’}
{ts, ‘2008-01-24 23:59:59.999’}2.2)標量函數: 是指僅返回一個值的函數;要調用函數, 需要嵌入標準的函數名和參數: (干貨——標量函數定義)
{fn left(?, 20)}
{fn user() }2.3 )存儲過程: 是在數據庫中執行的用數據庫相關的語言編寫的過程。要調用存儲過程, 需要使用 call 轉移命令, 其中在存儲過程沒有任何參數的時候, 就不用加上括號。另外,應該用=來捕獲存儲過程的返回值; (干貨——存儲過程定義)
{call PROC1(?, ?)}
{call PROC2}
{call ?=PROC3(?)}2.4)外連接;
- 2.5) _ 和 % 字符在 LIKE 子句中具有特殊含義: 用來匹配一個字符或一個字符序列。 目前并不存在任何在字面上使用它們的標準方式, 所以如果想要匹配所有包含_ 字符的字符串, 就必須使用下面結構: (干貨——_ 和 % 字符在 LIKE 子句中具有特殊含義)
…. where ? like %!_% {escape ‘!’}
這里, 我們將 ! 定義為 轉移字符, 而 !_ 組合表示字面常量下劃線; (干貨—— 嘆號! 定義為轉移字符)
【2】多結果集
0)多結果集定義: 在執行存儲過程,或在使用允許在單個查詢中提交多個select 語句的數據庫時,一個查詢有可能會返回多個結果集。 (干貨——多結果集定義)
1)下面是獲取結果集的步驟: (干貨——獲取結果集的步驟)
- step1)使用execute 方法來執行 sql 語句;
- step2) 獲取第一個結果集或更新計數;
- step3)重復調用 getMoreResults 方法以移動到下一個結果集;
step4) 當不存在更多的結果集或更新計數時, 完成操作;
1.1) 如果由多結果集構成的鏈中的下一項是結果集, execute 和 getMoreResults 方法將返回 true, 而如果在鏈中的下一項不是更新計數,getUpdateCount 方法將返回-1;
- 1.2)下面的循環遍歷所有結果集:
2)看個多結果集的荔枝:
- 2.1)for souce code, please visit : https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter4/execute_select/OneCommitMultipleSelect.java
- 2.2)key source code at a glance:
- 2.3)relative printing results as follows:
Complementary)
C1)怎樣創建+查看+調用存儲過程;
C2)在創建存儲過程的命令行代碼中, delimiter // 以及 最后的 end// 是什么意思?
它其實就是一個分隔符而已, 表明分隔符內的 分號; 并不表示輸入結束,輸入結束的標志是配對的 ‘//’: for detailed info , please visit http://database.51cto.com/art/201011/235017.htm
【3】獲取自動生成鍵
1)當我們向數據庫插入一個新行, 且其鍵自動生成時,可以實現下面的代碼來獲取這個鍵:
stmt.executeUpdate(insertStatement, Statement.RETURN_GENERATED_KEYS); // 自動生成主鍵; ResultSet rs = stmt.getGeneratorKeys(); // 返回自動生成鍵的結果集; if(rs.next()) {int key = rs.getInt(1);... }2)看個獲取自動生成鍵的荔枝:
- 2.1)for souce code, please visit : https://github.com/pacosonTang/core-java-volume/blob/master/coreJavaAdvanced/chapter4/execute_select/MyGetPrimaryKey.java
- 2.2)key source code at a glance:
- 2.3)relative printing results as follows:
總結
以上是生活随笔為你收集整理的java数据库编程——执行查询操作(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 默认浏览器设置在哪里设置
- 下一篇: com.mysql.jdbc.NotUp