最近有個功能是需要重置不同身份的密碼根據不同的規則,其中一個規則就是手機號碼后六位,有多個身份,並且底層數據封裝的比較死,只能通過公用方法去更新密碼,但是這好幾個身份都有共同的數據特性,用戶編碼,用戶名稱,手機號碼,將這些字段存入一張臨時表,在開始時根據需要選中某個單位的某個身份進行密碼重置,這就涉及多個表插入臨時表,當數據多的時候每次插入一條記錄,一萬條數據執行一萬次記錄很不現實,所以需要執行一次sql插入多條記錄到數據庫當中
ORACLE 數據庫插入多條記錄的sql結構為:
INSERT ALL INTO TABLENAME(FIELDS1, FIELD2) VALUES(VALUE1, VALUE2) INTO TABLENAME(FIELDS1, FIELD2) VALUES(VALUE1, VALUE2) SELECT 1 FROM DUAL;
與mysql稍有不同,
比如在前台根據需要選擇要初始化密碼的身份
StringBuilder strSQL = new StringBuilder (); if(選中身份1) { strSQL.Append ("INTO TABLENAME(FIELD1, FIELD2) VALUES (VALUE1, VALUE2 ") } if(選中身份2) { strSQL.Append ("INTO TABLENAME(FIELD1, FIELD2) VALUES (VALUE1, VALUEE2 ") } if(選中身份3) { strSQL.Append ("INTO TABLENAME(FIELD1, FIELD2) VALUES (VALUE1, VALUE2 ") } if (strSQL.Length == 0) { “未查詢到數據” return; } strSQL.Insert (0, "INSERT ALL "); strSQL.Append (" SELECT 1 FROM DUAL "); bool = 執行sql
在后續截取密碼中,先判斷手機號碼是否合法,
strTelphone = "15641481111"; strTelphone.substring(strTelphone.length -6); //后六位