- UID
- 72773
- 閱讀權限
- 20
- 主題
- 13
- 帖子
- 69
- 精華
- 5
- A幣
- 216
- 在線時間
- 164 小時
- 最後登錄
- 2024-11-30
初窺門道
- 主題
- 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 編輯
有事沒事發點基礎教學文
刷個存在感
今天的主題
Java撈取SQL資料後,將其變成Object型態
看主題似乎很難對吧?
其實很簡單,Object型態類似多維陣列
前置工程量比陣列麻煩
但實用性比多維陣列更好 更容易操作
讓我們開始今天的教學吧
首先必須先決定你要撈什麼資料表的什麼資料
打個比方
我想弄一個可以把CDK獎勵發送到信箱的功能
關於CDK可以看這篇
那麼我就必須建立一個新的資料表
大置上結構如下
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 = new Mail(rs.getInt("itemid"), rs.getInt("count"), rs.getString("text"));
複製代碼 像我就要把itemid、count、text丟進集合裡面
最後再把資料丟進物件內
好,到這邊一定會一堆紅線,不要緊張
我們來創建一個新的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;
- }
複製代碼
然後使用就自己調整就好了
結果會像這樣
如何,是不是很簡單呢?
|
|