可以给我添加功能的拓展吗‘
时间: 2024-02-26 21:59:28 浏览: 60
当然,下面我为你添加了一些基本的功能拓展,包括增加、删除和修改数据的功能:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QLineEdit, QLabel
import pyodbc
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 连接 SQL Server 数据库
self.cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=mydatabase;UID=username;PWD=password')
self.cursor = self.cnxn.cursor()
# 创建主窗口和表格
self.setWindowTitle("SQL Server Database")
self.setGeometry(100, 100, 800, 600)
self.table = QTableWidget()
self.setCentralWidget(self.table)
# 创建按钮和文本框,用于添加、删除和修改数据
self.add_button = QPushButton("添加")
self.delete_button = QPushButton("删除")
self.edit_button = QPushButton("修改")
self.input_box = QLineEdit()
self.input_box.setPlaceholderText("输入数据,格式为:ID,Name,Age")
self.status_label = QLabel()
# 设置按钮的点击事件
self.add_button.clicked.connect(self.add_data)
self.delete_button.clicked.connect(self.delete_data)
self.edit_button.clicked.connect(self.edit_data)
# 创建水平布局,将按钮和文本框添加到布局中
self.h_layout = QHBoxLayout()
self.h_layout.addWidget(self.add_button)
self.h_layout.addWidget(self.delete_button)
self.h_layout.addWidget(self.edit_button)
self.h_layout.addWidget(self.input_box)
# 创建垂直布局,将表格和水平布局添加到布局中
self.v_layout = QVBoxLayout()
self.v_layout.addWidget(self.table)
self.v_layout.addLayout(self.h_layout)
self.v_layout.addWidget(self.status_label)
# 创建主窗口并设置布局
self.widget = QWidget()
self.widget.setLayout(self.v_layout)
self.setCentralWidget(self.widget)
# 查询数据库并显示结果
self.query("SELECT * FROM mytable")
def query(self, sql):
# 执行 SQL 查询语句
self.cursor.execute(sql)
# 获取查询结果并显示在表格中
rows = self.cursor.fetchall()
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)
def add_data(self):
# 获取输入框中的数据
data = self.input_box.text().split(",")
if len(data) != 3:
self.status_label.setText("输入格式错误!请按照 ID,Name,Age 的格式输入。")
return
# 执行 SQL 插入语句
sql = "INSERT INTO mytable (ID, Name, Age) VALUES (?, ?, ?)"
try:
self.cursor.execute(sql, data)
self.cnxn.commit()
self.query("SELECT * FROM mytable")
self.status_label.setText("数据添加成功!")
except:
self.status_label.setText("数据添加失败!")
def delete_data(self):
# 获取输入框中的数据
data = self.input_box.text().split(",")
if len(data) != 1:
self.status_label.setText("输入格式错误!请按照 ID 的格式输入。")
return
# 执行 SQL 删除语句
sql = "DELETE FROM mytable WHERE ID = ?"
try:
self.cursor.execute(sql, data[0])
self.cnxn.commit()
self.query("SELECT * FROM mytable")
self.status_label.setText("数据删除成功!")
except:
self.status_label.setText("数据删除失败!")
def edit_data(self):
# 获取输入框中的数据
data = self.input_box.text().split(",")
if len(data) != 3:
self.status_label.setText("输入格式错误!请按照 ID,Name,Age 的格式输入。")
return
# 执行 SQL 修改语句
sql = "UPDATE mytable SET Name = ?, Age = ? WHERE ID = ?"
try:
self.cursor.execute(sql, data[1], data[2], data[0])
self.cnxn.commit()
self.query("SELECT * FROM mytable")
self.status_label.setText("数据修改成功!")
except:
self.status_label.setText("数据修改失败!")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序除了基本的查询功能,还添加了添加、删除和修改数据的功能,并且会在底部显示操作状态。你可以根据自己的需求和具体情况进行修改和扩展。
阅读全文