我正在使用幾個JTable接受和顯示數據的項目。我現在需要將記錄插入3個相關表格。從JTable到數據庫插入記錄的不同方式或有效方法
學費
id PK
gradelevel_id
schoolyear_id
費
id PK
title
amount
description
feetype_id
tuition_fee
id PK
tuition_id
fees_id
所以我想我會創建一個保存位置並將所有插入語句放入事務中。
CREATE DEFINER=`root`@`localhost` PROCEDURE `createTuition`(aFeeTitle VARCHAR(100),aFeeAmount DECIMAL, aFeeDescription TEXT, aFeeTypeId INT, aGradeLevelId INT, aSchoolYearId INT)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK; RESIGNAL;
END;
DECLARE tuition_idVariable INT;
DECLARE fees_idVariable INT;
START TRANSACTION;
-- INSERT statement 1
INSERT INTO tuition(gradelevel_id,schoolyear_id)
VALUES(aGradeLevelId, aSchoolYearId);
SELECT LAST_INSERT_ID() INTO tuition_idVariable;
-- INSERT statement 2
-- this insert on `fees` I'm not sure if I can put within the transaction -- together with the insert on tuition table because I will need to do an -- iterated call on this procedure to get the records on JTable
INSERT INTO fees(title,amount,description,feetype_id)
VALUES(aFeeTitle,aFeeAmount,aFeeDescription,aFeeTypeId);
SELECT LAST_INSERT_ID() INTO fees_idVariable;
-- INSERT statement 3
INSERT INTO tuition_fee(tuition_id,fees_id)
VALUES(tuition_idVariable,fees_idVariable);
COMMIT;
END
所以,如果每1學費有許多收費,我需要做到以下幾點在那個生病把存儲過程中的事務。
START TRANSACTION;
步驟1:插入1記錄到tuition
表
步驟1.1:SELECT LAST_INSERT_ID() INTO tuition_idVariable
步驟2:SELECT LAST_INSERT_ID() INTO fees_idVariable
JTable
到
fees
表
步驟2.1插入許多費用
步驟3:INSERT INTO tuition_fee(tuition_id, fees_id) VALUES(tuition_idVariable, fees_idVariable);
在步驟2中,我必須遍歷JTable
的每一行,其中包含費用,這使我認爲可能有一種方法可以將JTable
批量記錄作爲參數傳遞給存儲過程。
問題1:這是可能的還是我仍然需要創建一個for循環?
for(int i=0; i<Jtable.getRowCount(); i++){
String value = (String) getValueAt(i,columnNumber);
classname.createTuition(arguments);
}
問題2:另外,如果有對creatTuition()
方法插入多行(在步驟2),以不收費電話迭代沒有可能的方式,是它最好創建兩個存儲過程?
問題3:當我與JTables
工作,我買了一樣東西在我for
循環顯示記錄存儲到數據庫中對存儲過程的迭代通話。這是一個好習慣嗎?有更好更有效的方法嗎?
問題4:在數據庫中插入所有它的記錄到MANY
表時JTables
你怎麼工作?
問題5:我的桌子設計不好嗎?有什麼建議麼?
這是我創建的GUI。
很抱歉,如果說明是漫長的。我會很感激任何幫助。
在此先感謝!
*** 「問題5:」 *** SO是一個Q&A網站,而不是幫助臺!當每個線程有一個明確的,具體的問題時,效果最好。 –