def edit_data(self): # 创建一个新窗口,并设置其属性 new_window = QWidget() new_window.status_label1 = QLabel() new_window.status_label2 = QLabel() new_window.setWindowTitle("修改员工信息") new_window.setGeometry(200, 200, 400, 300) # 创建返回按钮并设置其属性 return_button = QPushButton("返回", new_window) return_button.clicked.connect(new_window.close) return_button.clicked.connect(self.window.show) # 设置输入框 self.input_box1 = QLineEdit(new_window) new_window.status_label1.setText("输入修改前的对象,格式为:部门/姓名/性别/职位/工号/状态,对象") self.input_box2 = QLineEdit(new_window) new_window.status_label2.setText("输入修改后的对象,格式为:部门/姓名/性别/职位/工号/状态,对象") # 设置修改按钮 edit_button = QPushButton("修改",new_window) edit_button.clicked.connect(lambda: self.edit(new_window)) # 添加表格、按键到新窗口中 self.v_layout = QVBoxLayout(new_window) self.v_layout.addWidget(new_window.status_label1) self.v_layout.addWidget(self.input_box1) self.v_layout.addWidget(new_window.status_label2) self.v_layout.addWidget(self.input_box2) self.v_layout.addWidget(edit_button) self.v_layout.addWidget(return_button) new_window.setLayout(self.v_layout) new_window.show() def edit(self,new_window): # 获取输入框中的数据 data1 = self.input_box1.text().split(",") if len(data1) != 2: new_window.status_label1.setText("输入格式错误!请按照 部门/姓名/性别/职位/工号/状态,对象 的格式输入。") return data2 = self.input_box2.text().split(",") if len(data2) != 2: new_window.status_label1.setText("输入格式错误!请按照 部门/姓名/性别/职位/工号/状态,对象 的格式输入。") return # 执行 SQL 修改语句 sql = "UPDATE Staff SET ? = ? WHERE ? = ?" try: self.cursor.execute(sql, data1[0], data1[1], data2[0], data2[1]) self.cnxn.commit() new_window.status_label1.setText("数据修改成功!") except: new_window.status_label1.setText("数据修改失败!")无法修改数据,在提示正确修改后数据并没有修改
时间: 2024-02-29 12:51:17 浏览: 69
pyqt5_python_Gui入门教程.docx )
5星 · 资源好评率100%
根据你提供的代码,无法确定具体出错的原因,但有几个可能的问题:
1. SQL语句中的占位符(?)无法使用于列名或表名,只能用于值。因此,应该使用字符串拼接的方式构建SQL语句,如:
```
sql = "UPDATE Staff SET " + data1[0] + " = ? WHERE " + data2[0] + " = ?"
```
2. 如果修改失败,可能是因为输入的数据格式不正确或者查找不到对应的记录。在执行SQL语句前,应该先对输入的数据进行检查,确保其格式正确,并且在修改前应该先查询一下数据库,确认有对应的记录存在。
3. 如果修改成功但数据并没有修改,可能是因为更新的值和原始值相同。在更新前,应该先判断新值是否和旧值相同,并且在使用UPDATE语句时,应该加上WHERE子句,确保只更新指定的记录。
阅读全文