私はSQliteデータベースを持つjavaFxプロジェクトでJDBCを使用しています。私は2つのテーブルを持っています"PROJECT"
と"SMAllPROJECT"
のようなPROJECTはこの構造を持っていますPROJECT(name,date,state)
とSMAllPROJECT
はこの構造を持っていますSMAllPROJECT(name,date,state,*project_name*)
。 Project_name
はname
の列のPROJECT table
から参照される。親テーブルから行を削除するにはどのように参照された列を子テーブルにするのですか?
PROJECT
から行を削除しようとしており、SMAllPoject
で参照されている行を削除する必要があります。 sqliteスタジオでは、親テーブルから行を削除するときにonCascade
メソッドを設定します.SQliteスタジオでテストするとうまくいきますが、自分のコードでは親テーブルから行が削除されます。
この
は私のコードです:コントローラメソッド
public void ExecuteDeleteProject() {
if (!SearchIdProjectSupp.getText().isEmpty()) {
Project project = new ProjectDao().FindString(SearchIdProjectSupp.getText());
new ProjectDao().Delete(project);
String title = "Suppression";
String message = "Vous avez supprimé le projet " + SearchIdProjectSupp.getText() + ".";
NotificationType notification = NotificationType.SUCCESS;
TrayNotification tray = new TrayNotification();
tray.setTitle(title);
tray.setMessage(message);
tray.setNotificationType(notification);
tray.setAnimationType(AnimationType.SLIDE);
tray.setImage(new Image("Images/check.png"));
tray.setRectangleFill(Paint.valueOf("#a8a9fe"));
tray.showAndDismiss(Duration.seconds(4));
SearchIdProjectSupp.setText("");
SuppPaneProject.setVisible(false);
DeleteProjetButton.setDisable(true);
CountP.setVisible(true);
CountP();
CountR();
CountPP();
}
}
DAOパターン法
public boolean Delete(Project Object) {
try {
String queryDeletePerson = "DElETE FROM PROJECT WHERE name=" + "'" + Object.getName() + "'";//Query Insertion in Person_Table
PreparedStatement preparedStatementPerson = Dbaconnection.getConnection().prepareStatement(queryDeletePerson);//Prepared statement i use this for high performance
preparedStatementPerson.execute();
} catch (SQLException ex) {
Logger.getLogger(EMPDao.class.getName()).log(Level.SEVERE, null, ex);
}
return true;
}
そして、これは私のDDLです
CREATE TABLE PROJECT (
NAME VARCHAR2 (100) PRIMARY KEY,
STATE VARCHAR2 (100),
DATEDBT DATE,
);
CREATE TABLE SMALLPROJECT (
NAMEPROJECT VARCHAR2 (100) REFERENCES PROJECT (NAME) ON DELETE CASCADE
ON UPDATE CASCADE,
NAME VARCHAR2 (20) PRIMARY KEY,
DATEDBT DATE,
STATE VARCHAR2 (20) PRIMARY KEY
);
テーブルの定義を共有できますか(列リストだけでなく、作成に使用された実際のDDL)。 – Mureinik
質問を編集する場合は、質問を改善するために他のユーザーが行った編集作業に捨てないでください。あなたの質問をより悪い状態にしてしまったので、最後の編集をロールバックしました。英語では、単語 "I"は常に大文字になり、文の間にスペースを追加します。 –
@Mureinik、私はそれらを作成するために使用された実際のDDLを共有しました。 –