java - 无法删除或更新父行 - Java
问题描述
我的老师正在尝试删除学生使用的行。但是我怎么能删除这一行呢?如果老师想删除课程,无论如何都应该删除它?
这是我用于删除查询的功能:
con = DriverManager.getConnection ("jdbc:mysql://localhost:3307/lessons","root","");
String query = "DELETE FROM lessons WHERE Number= ?";
PreparedStatement pst = con.prepareStatement(query);
pst.setString(1,txtFieldNumber.getText());
pst.executeUpdate();
.
CREATE TABLE UserLogin(
Number INTEGER,
UserNumberINTEGER,
FOREIGN KEY (Number) REFERENCES termin(Number),
FOREIGN KEY (UserNumber) REFERENCES User(UserNumber)
);
CREATE TABLE lessons(
Number INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
LName VARCHAR(20)
);
CREATE TABLE User(
Name VARCHAR (20),
UserNUmber INTEGER NOT NULL PRIMARY KEY
);
解决方案
setString
当基础列是时,您不能使用int
假设您txtFieldNumber.getText()
返回String
格式中的数字,请尝试以下操作
pst.setInt(1,Integer.parseInt(txtFieldNumber.getText()));
更新:
根据您的问题编辑,您似乎首先尝试删除表lessons
中引用的 主键。UserLogin
这就是您面临错误的原因。
为了克服这个问题,您可能需要先在表中删除UserLogin
,然后在表中删除相应的行lessons
。
String query = "DELETE FROM UserLogin WHERE Number= ?";
PreparedStatement pst = con.prepareStatement(query);
pst.setInt(1,Integer.parseInt(txtFieldNumber.getText()));
pst.executeUpdate();
String query2 = "DELETE FROM lessons WHERE Number= ?";
pst = con.prepareStatement(query2);
pst.setInt(1,Integer.parseInt(txtFieldNumber.getText()));
pst.executeUpdate();
这应该可以解决您的问题
推荐阅读
- java - 从 jpanel 中删除组件时出现 NullPointerException
- python - 使用日期时间过滤 json 结果 - 排除周末 - Python
- java - 使用 datastax 收听 cassandra 数据库
- javascript - Vue - 动态创建使用例如 v-on:click 的 div
- symfony - 与 FOSUserBundle 和易于扩展的自定义实体创建关系时出错
- javascript - 在react-redux、redux-thunk中依次调用多个action
- sql-server - 是否可以在 SSAS 中存储 SSAS 对象的自定义元数据?(用于版本控制)
- android - 在 Android 中手动设置蓝牙服务器端口
- neural-network - 如何解释没有预测到负面?
- c# - 事件的类字段实现