def query_data(self, new_window): # 获取输入框中的数据 data = self.input_box.text().split(",") if len(data) != 2 or not all(map(lambda x: x.strip(), data)): self.status_label.setText("输入格式错误!请按照 部门/姓名/性别/职位/工号/状态,对象 格式输入。") return # 执行 SQL 查询语句 sql = "select * from Staff where (?) = (?)" self.cursor.execute(sql) # 获取查询结果并显示在表格中 rows = self.cursor.fetchall() self.table = QTableWidget() if rows: self.table.setRowCount(len(rows)) self.table.setColumnCount(len(rows[0])) for i, row in enumerate(rows): for j, col in enumerate(row): item = QTableWidgetItem(str(col)) self.table.setItem(i, j, item) self.table.setHorizontalHeaderLabels(["部门", "姓名", "性别", '职位', '工号', '状态']) self.table.horizontalHeader().setVisible(True) self.v_layout = QVBoxLayout(new_window) self.v_layout.addWidget(self.input_box) # 添加表格到新窗口中 self.v_layout.addWidget(self.table) new_window.setLayout(self.v_layout) new_window.show()查错
时间: 2024-02-14 15:06:41 浏览: 137
fluids_libs.zip_LIBS MATLAB_fluids_glee_VS2008d.lib
根据你提供的代码,`self.cursor.execute(sql)` 执行的是一个 SQL 查询语句,但是并没有将查询语句中的参数 `(?)` 和 `(?)` 进行替换。因此,在执行 `self.cursor.execute(sql)` 时会出现错误。
你需要将查询语句的 `(?)` 替换为具体的参数值。可以使用 `pyodbc` 模块提供的 `execute` 方法的第二个参数来替换这些参数。例如:
```
sql = "select * from Staff where {} = ?".format(data[0])
self.cursor.execute(sql, (data[1],))
```
这个语句中,`{}` 是一个格式化字符串,用于将 `data[0]` 插入到 SQL 查询语句中。然后,使用 `self.cursor.execute(sql, (data[1],))` 方法执行 SQL 查询语句,并将 `data[1]` 作为参数传递给查询语句中的 `(?)`。
你还需要注意,`self.input_box` 没有在代码中定义,因此在运行代码时可能会引发错误。
希望这可以帮助你解决问题。
阅读全文