iT邦幫忙

0

新手-JDBC"新增"問題

各位大神好,小弟最近練習JDBC的新增、修改、刪除、查詢,但遇到了"無法新增"的問題,其他3個功能都可以正常操作,想詢問大神們我的程式有什麼問題嗎?
Maven專案
Mysql版本: 8.0.26
Java version: 1.8.0_301
SQL指令:
https://drive.google.com/file/d/1zmoA9Hy8F84iHuVIOMFyJ3Hy8Q43nXaY/view?usp=sharing

test支線:
https://github.com/Boss-Lin/MonsterStrike.git

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
rogeryao
iT邦超人 8 級 ‧ 2021-10-19 12:54:25
最佳解答
CREATE TABLE MANAGER (
    MG_no VARCHAR(20) NOT NULL PRIMARY KEY DEFAULT '0',
    MG_email VARCHAR(20) NOT NULL,
    MG_password VARCHAR(20) NOT NULL,
    MG_name VARCHAR(20) NOT NULL,
    MG_title VARCHAR(20) NOT NULL,
    MG_spec VARCHAR(45),
    Line_id VARCHAR(20) ,
    Line_url VARCHAR(20) ,
    MG_createtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    MG_updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO MANAGER
(MG_no,MG_email, MG_password, MG_name, MG_title, MG_spec, Line_id, Line_url) 
SELECT CONCAT('MG', LPAD(SUBSTRING(IFNULL(MAX(MG_no),'00000'),3,3)+1, 3, '0')) ,
'123456@gmail.com', '123456', '大翔', '老闆', null, '123456', null FROM MANAGER;

INSERT INTO MANAGER
(MG_no,MG_email, MG_password, MG_name, MG_title, MG_spec, Line_id, Line_url) 
SELECT CONCAT('MG', LPAD(SUBSTRING(IFNULL(MAX(MG_no),'00000'),3,3)+1, 3, '0')) ,
'654321@gmail.com', '654321', '小翔', '小編', null, null, null FROM MANAGER;

Demo

或是用原 SQL 修改
Demo (更新)

CREATE TRIGGER tg_MANAGER_insert BEFORE INSERT ON MANAGER 
FOR EACH ROW 
BEGIN 
INSERT INTO MANAGER_seq VALUES (NULL); 
SET NEW.MG_no = CONCAT('MG', LPAD(LAST_INSERT_ID(), 3, '0')); 
END

最後一個 END 後面不要有【;】
請參閱 : MySQL Workbench : How to Configure Triggers in MySQL

看更多先前的回應...收起先前的回應...
aa4731073 iT邦新手 4 級 ‧ 2021-10-20 12:07:23 檢舉

請問大神:

  1. 如果我參考你的第一個Demo,那我ManagerJDBCDAO要如何做更改?
  2. 我完整複製大神的第二個Demo,發現在Mysql Workbench會跳出END is not valid at this position, expecting EOF, ...的錯誤。
  3. 請問我的SQL沒辦法在專案執行"新增"功能的原因,是像樓上海綿寶寶大神說的那樣,「新增的資料鍵值((primary) index)重覆」這個原因嗎?
rogeryao iT邦超人 8 級 ‧ 2021-10-20 14:23:58 檢舉
1.【未使用 CREATE TRIGGER】:
   修改 Manager JDBC DAO 內的新增的 SQL,語法同(第一個Demo)
2.【使用 CREATE TRIGGER】:
   請參閱上面的(更新)及說明
3.主要是 CREATE TRIGGER 沒成功,因此新增時沒產生新的 MG_no 只用預設值 '0' ,只產生(第一次)新增的資料;
  當(第二次)新增時 MG_no 依舊只用預設值 '0' ,MG_no PRIMARY KEY ,所以無法寫入,
  也就是海綿寶寶說的 「新增的資料鍵值((primary) index)重覆」。

Demo : Duplicate entry '0' for key 'MANAGER.PRIMARY'

aa4731073 iT邦新手 4 級 ‧ 2021-10-22 13:59:24 檢舉

大神你好,我目前嘗試使用你提供的2種sql寫法,但我的test.java還是無法新增資料。

aa4731073 iT邦新手 4 級 ‧ 2021-11-05 14:53:33 檢舉

找到問題答案了,原來是我的Test.java有問題。謝謝大神/images/emoticon/emoticon01.gif

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-10-19 10:08:13

新增、修改、刪除、查詢,但遇到了"無法新增"的問題,其他3個功能都可以正常操作

不看程式用猜的
「新增的資料鍵值((primary) index)重覆」

我要發表回答

立即登入回答