java連線資料庫後進行更新插入操作
阿新 • • 發佈:2019-02-08
接上一次的查詢操作,這次將更新與插入的程式碼補充
首先是服務端的接收端,接收到客戶端的請求則傳送相應操作
if ("1".equals(message)) { //從mysql資料庫倉庫中查詢資料 jc.mysqlSelect("select * from cangku"); // //從oracle資料庫訂單表中查詢資料 // jc.oracleSelect("select * from freshbin_dingdan"); //當oracle資料中連線不上時候,就從本地的mysql資料庫的訂單表獲取資料 jc.mysqlSelectDingDan("select * from dingdan"); //獲取訂單表與倉庫表比較後,數量不同的結果 jc.writeIO(); //將兩張表比較後的結果返回給客戶端 os.write(jc.writeIO().toString().getBytes()); os.flush(); } //這是更新操作的功能程式碼 if("2".equals(message)) { UpdateMySqlCangKuNumber umsck = new UpdateMySqlCangKuNumber(); //將需要更新以及插入的資料傳送給客戶端 StringBuffer sb = umsck.getUpdateInsertNumber(); os.write(sb.toString().getBytes()); } os.write(("請輸入1或2(1為查詢,2為更新):\n").getBytes()); }
然後是獲取需要更新與插入的id與數量
// 執行查詢倉庫與訂單的語句,獲取需要更細與插入的商品編號與數量 public void getNewNumber() { // 從mysql資料庫倉庫中查詢資料並儲存起來 mysqlMap = jc.mysqlSelect("select * from cangku"); // 從mysql資料庫訂單表中獲取資料並存儲起來 mysqlDingDanMap = jc.mysqlSelectDingDan("select * from dingdan"); // 獲取倉庫表的所有資料 Set<Integer> mysqlSet = mysqlMap.keySet(); // 獲取訂單表的資料 Set<Integer> mysqlDingDanSet = mysqlDingDanMap.keySet(); for (Integer mn : mysqlSet) { // 定義一個boolean型別的變數來表示當倉庫的商品編號在訂單表中不存在時,就設定為true boolean flag = true; for (Integer on : mysqlDingDanSet) { if (mn.intValue() == on.intValue()) { if (mysqlMap.get(mn).intValue() != mysqlDingDanMap.get(mn) .intValue()) { updateNewNumber.put(mn, mysqlMap.get(mn)); } flag = false; } } // 當flag為true時,就把訂單表中沒有的商品編號存起來 if (flag) { insertNewNumber.put(mn, mysqlMap.get(mn)); } } }
接著是執行更新操作和插入操作,以及把結果以字串的形式傳送給客戶端
// 進行更新操作 public void updateNumber() { // 執行查詢倉庫與訂單的語句,獲取需要更細與插入的商品編號與數量 getNewNumber(); // 獲取所有需要更新的商品編號 Set<Integer> mysqlDingDanNumber = updateNewNumber.keySet(); for (Integer i : mysqlDingDanNumber) { // 將需要更新的商品編號和數量更新到訂單表中 jc.getMsPool().getUPstmt( "update dingdan set dingdannumber=? WHERE id=?", i, updateNewNumber.get(i)); } } // 進行插入操作 public void insertNumber() { // 獲取所有需要插入的商品編號 Set<Integer> mysqlDingDanNumber = insertNewNumber.keySet(); for (Integer i : mysqlDingDanNumber) { // 將需要插入的商品編號和數量插入到訂單表中 jc.getMsPool().getUPstmt( "insert into dingdan(dingdannumber,id) values(?,?)", i, insertNewNumber.get(i)); } } // 遍歷需要更新的資料,以字串形式儲存,以便將來發送給客戶端 public StringBuffer getUpdateInsertNumber() { // 進行更新操作 updateNumber(); // 進行插入操作 insertNumber(); // 獲取所有需要更新的商品編號 Set<Integer> mysqlDingDanNumber = updateNewNumber.keySet(); for (Integer i : mysqlDingDanNumber) { SBUpdateNumber.append("更新了商品編號為:" + i + "的商品-----此次更新的數量為:" + updateNewNumber.get(i) + "\r\n"); } // 獲取所有需要插入的商品編號 Set<Integer> mysqlDingDanInsertNumber = insertNewNumber.keySet(); for (Integer i : mysqlDingDanInsertNumber) { SBUpdateNumber.append("插入了新的商品編號為:" + i + "的商品-----此次插入的數量為:" + insertNewNumber.get(i) + "\r\n"); } return SBUpdateNumber; }
最後,當然是上圖了
下面這張圖是我僅僅實現了更新功能時候的測試
然後是執行更新與插入的圖
這個小小的程式經過改了又改,雖然有點浪費時間,但是實現效果後,自己感覺還是挺開心的.....雖然已經很晚了,但是頓時感覺很清醒..........好,可以去睡覺了...........加油!,.......................