a894985459

Java[Object] - SQL應用教室精華

發表於 2023-8-7 23:01:07
a894985459 發表於 2023-8-7 23:01:07 | 顯示全部樓層 |閱讀模式
有事沒事發點基礎教學文
刷個存在感

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

讓我們開始今天的教學吧

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

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

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

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

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

        Connection con = DatabaseConnection.getConnection();
        try {
            List<Object> mailbox = new ArrayList<Object>();
            Mail mail = null;
            PreparedStatement ps = con.prepareStatement("SELECT * FROM game_mail WHERE accid = ? order by id desc limit 0, 100");
            ps.setInt(1, id);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                  mail = new Mail(rs.getInt("itemid"), rs.getInt("count"), rs.getString("text"));
                  mailbox.add(mail);
            }
            rs.close();
            ps.close();
            return mailbox;
        } catch (Exception Ex) {
            Ex.printStackTrace();
            return null;
        }
    }
複製代碼

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

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


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


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


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

public class Mail {
    private String text;
    private int accid,itemid,count;

    public int getAccid() {
        return accid;
    }
    
    public int getItemid() {
        return itemid;
    }

    public int getCount() {
        return count;
    }
    
    public String getText () {
        return text;
    }
    
    Mail(final int itemid, final int count ,final String text) {
        this.itemid = itemid;
        this.count = count;
        this.text = text;
    }
}
複製代碼


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

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

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

沒搞懂嗎?

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

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

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

大概寫一下結構,會是這樣
function getAllGameMail() { //信箱
    var SendStr = "";
        for (var c = 0;c < cm.getAllGameMail(2).length; c++) {
            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";
        }
    return SendStr;
}
複製代碼

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

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

如何,是不是很簡單呢?

瀏覽 2858 回復 1

您需要登錄後才可以回帖 登錄 | 註冊會員

返回頂部