在C#中实现数据库的增删查改(CRUD)操作,通常需要结合Windows Forms或WPF等图形界面技术,以下是一个基于Windows Forms的示例,展示如何实现一个简单的CRUD页面。
确保你已经安装了Visual Studio和SQL Server,如果没有,请先安装这些软件。
在SQL Server Management Studio中,创建一个新数据库和一个表。
CREATE DATABASE TestDB; USE TestDB; CREATE TABLE Employees ( Id INT PRIMARY KEY IDENTITY(1,1), Name NVARCHAR(50), Age INT, Position NVARCHAR(50) );
打开Visual Studio,创建一个新的Windows Forms App项目。
在Form上添加以下控件:
TextBox:用于输入员工姓名、年龄和职位。
Button:用于执行增、删、查、改操作。
DataGridView:用于显示员工列表。
在Form的代码文件中,添加一个方法来连接数据库:
private SqlConnection GetConnection() { return new SqlConnection("Server=YOUR_SERVER;Database=TestDB;Integrated Security=True"); }
添加一个方法来填充DataGridView:
private void LoadData() { using (SqlConnection conn = GetConnection()) { conn.Open(); string query = "SELECT * FROM Employees"; SqlCommand cmd = new SqlCommand(query, conn); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable table = new DataTable(); adapter.Fill(table); dataGridView1.DataSource = table; } }
在Form的Load
事件中调用LoadData
方法:
private void Form1_Load(object sender, EventArgs e) { LoadData(); }
为“添加”按钮添加点击事件处理程序:
private void btnAdd_Click(object sender, EventArgs e) { using (SqlConnection conn = GetConnection()) { conn.Open(); string query = "INSERT INTO Employees (Name, Age, Position) VALUES (@Name, @Age, @Position)"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@Name", txtName.Text); cmd.Parameters.AddWithValue("@Age", Convert.ToInt32(txtAge.Text)); cmd.Parameters.AddWithValue("@Position", txtPosition.Text); cmd.ExecuteNonQuery(); } LoadData(); // 重新加载数据以更新DataGridView }
为“删除”按钮添加点击事件处理程序:
private void btnDelete_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { int id = (int)dataGridView1.SelectedRows[0].Cells[0].Value; using (SqlConnection conn = GetConnection()) { conn.Open(); string query = "DELETE FROM Employees WHERE Id = @Id"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@Id", id); cmd.ExecuteNonQuery(); } LoadData(); // 重新加载数据以更新DataGridView } else { MessageBox.Show("请选择一个要删除的员工!"); } }
为“更新”按钮添加点击事件处理程序:
private void btnUpdate_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { int id = (int)dataGridView1.SelectedRows[0].Cells[0].Value; string name = txtName.Text; int age = Convert.ToInt32(txtAge.Text); string position = txtPosition.Text; using (SqlConnection conn = GetConnection()) { conn.Open(); string query = "UPDATE Employees SET Name = @Name, Age = @Age, Position = @Position WHERE Id = @Id"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@Id", id); cmd.Parameters.AddWithValue("@Name", name); cmd.Parameters.AddWithValue("@Age", age); cmd.Parameters.AddWithValue("@Position", position); cmd.ExecuteNonQuery(); } LoadData(); // 重新加载数据以更新DataGridView } else { MessageBox.Show("请选择一个要更新的员工!"); } }
你可以运行项目并测试增、删、查、改功能了。
Q1: 如果我想在删除或更新时进行确认提示,应该怎么做?
A1: 你可以在删除或更新操作前使用MessageBox.Show
方法显示一个确认对话框,并根据用户的选择决定是否继续执行操作。
if (MessageBox.Show("确定要删除此员工吗?", "确认删除", MessageBoxButtons.YesNo) == DialogResult.Yes) { // 执行删除操作... }
Q2: 如何处理可能的输入错误,比如年龄输入非数字字符?
A2: 你可以在用户输入后验证数据格式,并在发现错误时显示错误消息。
try { int age = Convert.ToInt32(txtAge.Text); } catch (FormatException) { MessageBox.Show("请输入有效的年龄!"); return; // 阻止进一步操作 }