微信扫一扫 分享朋友圈

已有 1047 人浏览分享

[服務器教學] Java[Object] - SQL應用教室

[複製鏈接]

初窺門道

Rank: 2

389

威望

540

金錢

216

A幣
主題
13
帖子
69
精華
5
綜合社群主題發文量
0
電玩社群主題發文量
0
娛樂社群主題發文量
0
技術社群主題發文量
13
閱讀權限
20
註冊時間
2019-8-9

精華作者勳章

  • TA的每日心情

    2021-6-8 20:12
  • 簽到天數: 14 天

    連續簽到: 0 天

    [LV.3]偶爾看看II

    精華 a894985459 發表於  2023-8-7 23:01:07 | 顯示全部樓層 | 閱讀模式
    本帖最後由 a894985459 於 2023-8-7 23:01 編輯

    有事沒事發點基礎教學文
    刷個存在感

    今天的主題
    Java撈取SQL資料後,將其變成Object型態
    看主題似乎很難對吧?
    其實很簡單,Object型態類似多維陣列
    前置工程量比陣列麻煩
    但實用性比多維陣列更好 更容易操作

    讓我們開始今天的教學吧

    首先必須先決定你要撈什麼資料表的什麼資料
    打個比方

    我想弄一個可以把CDK獎勵發送到信箱的功能
    關於CDK可以看這篇

    那麼我就必須建立一個新的資料表
    大置上結構如下
    photo_2023-08-07_17-44-34.jpg
    accid = 遊戲帳號
    itemid = 物品id
    count  = 數量
    text = 顯示說明文本
    id = 流水號(要設定自動遞增)

    結構上了解了對吧?
    讓我們回到語法

    1. public List<Object> getAllGameMail(int id) {//取得帳號下100件信箱物品

    2.         Connection con = DatabaseConnection.getConnection();
    3.         try {
    4.             List<Object> mailbox = new ArrayList<Object>();
    5.             Mail mail = null;
    6.             PreparedStatement ps = con.prepareStatement("SELECT * FROM game_mail WHERE accid = ? order by id desc limit 0, 100");
    7.             ps.setInt(1, id);
    8.             ResultSet rs = ps.executeQuery();
    9.             while (rs.next()) {
    10.                   mail = new Mail(rs.getInt("itemid"), rs.getInt("count"), rs.getString("text"));
    11.                   mailbox.add(mail);
    12.             }
    13.             rs.close();
    14.             ps.close();
    15.             return mailbox;
    16.         } catch (Exception Ex) {
    17.             Ex.printStackTrace();
    18.             return null;
    19.         }
    20.     }
    複製代碼

    我們來分段講解
    連結資料庫部分語法就不多做說明了
    講重要的部分

    不管任何形態 我們都必須先給其定義
    先宣告 這是一個空集合的Object
    1. Mail mail = null;
    複製代碼


    迴圈內丟你想要放進集合的各種資料
    1. mail = new Mail(rs.getInt("itemid"), rs.getInt("count"), rs.getString("text"));
    複製代碼
    像我就要把itemid、counttext丟進集合裡面


    最後再把資料丟進物件內
    1. mailbox.add(mail);
    複製代碼


    好,到這邊一定會一堆紅線,不要緊張
    我們來創建一個新的Class給你要的物件集合使用

    1. public class Mail {
    2.     private String text;
    3.     private int accid,itemid,count;

    4.     public int getAccid() {
    5.         return accid;
    6.     }
    7.    
    8.     public int getItemid() {
    9.         return itemid;
    10.     }

    11.     public int getCount() {
    12.         return count;
    13.     }
    14.    
    15.     public String getText () {
    16.         return text;
    17.     }
    18.    
    19.     Mail(final int itemid, final int count ,final String text) {
    20.         this.itemid = itemid;
    21.         this.count = count;
    22.         this.text = text;
    23.     }
    24. }
    複製代碼


    由於是一個全新的物件集合
    所以必須創建一個新的區塊給這個集合使用
    最重要的是
    1. Mail(final int itemid, final int count ,final String text) {
    2.         this.itemid = itemid;
    3.         this.count = count;
    4.         this.text = text;
    5.     }
    複製代碼
    這一段必須跟你的資料庫語法符合

    說到這邊我想有點基礎的人都應該搞懂了

    置於語法使用看這邊
    1. cm.getAllGameMail(accid)[數字].getItemid()
    2. cm.getAllGameMail(accid)[數字].getCount()
    3. cm.getAllGameMail(accid)[數字].getText()
    複製代碼

    沒搞懂嗎?

    由於腳本的關係
    所以我們要思考的是如何取值出來

    由於我們不是存變數的關係
    所以在語法使用的時候是直接呼叫才撈資料
    因此 得出來的結果會是一個集合
    而下面的資料是子集合相當於一個List

    因此語法是直接去調用子集合 讓他直接把你要的值show出來

    大概寫一下結構,會是這樣
    1. function getAllGameMail() { //信箱
    2.     var SendStr = "";
    3.         for (var c = 0;c < cm.getAllGameMail(2).length; c++) {
    4.             SendStr += "#i" + (cm.getAllGameMail(2)[c].getItemid())+ "##t" + (cm.getAllGameMail(2)[c].getItemid()) + "# X" + (cm.getAllGameMail(2)[c].getCount()) + "\r\n#e" + (cm.getAllGameMail(2)[c].getText()) + "#k#n\r\n";
    5.         }
    6.     return SendStr;
    7. }
    複製代碼

    然後使用就自己調整就好了

    結果會像這樣
    photo_2023-08-07_22-58-52.jpg

    如何,是不是很簡單呢?

    共收到 20 A幣
    打賞榜
    共打賞 20 A幣
    暫無
    暫無
    暫無
    ----
    暫無
    ----
    暫無
    ----
    暫無
    ----

    點評

    這是一篇很優質的教學,我收錄到繁風計畫裡面讓更多人看到  發表於 2023-8-9 03:13
    您需要登錄後才可以回帖 登錄 | 註冊會員

    本版積分規則

    69

    發文

    540

    金錢

    216

    A幣

    ----------榮譽勳章----------

    精華作者勳章

    熱門推薦
    圖文推薦
    • 聯繫我們

    小黑屋|AICL社群娛樂集團

    GMT+8, 2024-11-22 09:48 , 網路刷新 0.104379 秒 .

    歡迎來到 AICL網路社群

    版權AICL社群所有 2011-2021.

    Total:123 Today:213 Online:322