私はいくつかのJTableを使ってデータを受け入れて表示するプロジェクトに取り組んでいます。私は現在、3つの関連テーブルにレコードを挿入する必要があります。JTableからデータベースへのレコードの挿入方法が異なる、または効率的な方法
授業
id PK
gradelevel_id
schoolyear_id
手数料
id PK
title
amount
description
feetype_id
tuition_fee
id PK
tuition_id
fees_id
は、だから、私はSTORを作成しようと思いましたすべての挿入ステートメントをトランザクションに挿入します。
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回の授業はMANY料を持っているのであれば、私は病気にストアド・プロシージャ内に置くのトランザクションでで次の操作を行う必要があります。
START TRANSACTION;
ステップ1:挿入1レコードの1.1ステップ
テーブルtuition
へ: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の)複数の行を挿入する一切の可能な方法はありません場合はまた、それは最高の2つのストアドプロシージャを作成するのですか?
質問3:私はJTables
で作業する場合、私はちょうどデータベースにレコードを格納するために私for
ループに示しているもののようなストアドプロシージャの反復呼び出しで使用されてしまいました。それは良い練習ですか?より良い、より効率的な方法がありますか?
質問4:データベースにMANY
テーブルにすべてのことのレコードを挿入するときにJTables
で作業するにはどうすればよい?
質問5:私のテーブルデザインは悪いですか?助言がありますか?
私が作成したGUIは次のとおりです。説明が長いの場合
申し訳ありません。私はどんな助けにも感謝します。
ありがとうございます!
*** "質問5:" *** SO Q&Aサイトがある、ないヘルプデスク!スレッドごとに1つ明確で具体的な質問がある場合に最適です。 –