当前位置:首页 > 行业动态 > 正文

c#窗体实现数据库的增删查改

摘要:C#窗体实现数据库增删查改,通过界面操作与数据库交互,完成数据管理功能。

在C#中,使用窗体应用程序实现数据库的增删查改操作是一个常见的需求,以下将详细介绍如何通过C#窗体应用程序连接数据库并实现这些基本操作:

1、准备工作

创建数据库和表:首先需要创建一个数据库和一个表,使用SQL Server Management Studio创建一个名为StudentDB的数据库,并在其中创建一个名为Students的表,包含字段如ID(主键、自增)、Name(姓名)、Age(年龄)等。

添加引用:在C#窗体应用程序项目中,右键点击“引用”,选择“管理NuGet程序包”,搜索并安装System.Data.SqlClient或其他适用于你的数据库的客户端库,以便与数据库进行交互。

2、连接数据库:在C#代码中,使用SqlConnection类来建立与数据库的连接,以下是一个简单的示例代码:

string connectionString = "Server=服务器地址;Database=数据库名称;User Id=用户名;Password=密码;";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

3、实现增删查改功能

增加记录(Insert):通过SqlCommand对象执行插入语句,将新记录添加到数据库表中,向Students表中插入一条新学生记录:

string insertQuery = "INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";
SqlCommand cmd = new SqlCommand(insertQuery, conn);
cmd.Parameters.AddWithValue("@Name", "张三");
cmd.Parameters.AddWithValue("@Age", 20);
int rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected > 0)
{
    MessageBox.Show("记录添加成功!");
}
else
{
    MessageBox.Show("记录添加失败!");
}

删除记录(Delete):根据指定条件删除数据库表中的记录,根据学生ID删除一条记录:

string deleteQuery = "DELETE FROM Students WHERE ID = @ID";
SqlCommand cmdDelete = new SqlCommand(deleteQuery, conn);
cmdDelete.Parameters.AddWithValue("@ID", 1); // 假设要删除ID为1的学生记录
int rowsDeleted = cmdDelete.ExecuteNonQuery();
if (rowsDeleted > 0)
{
    MessageBox.Show("记录删除成功!");
}
else
{
    MessageBox.Show("记录删除失败!");
}

查询记录(Select):使用SqlDataReaderDataTable等对象来获取查询结果,并在窗体上显示,查询所有学生记录并显示在DataGridView控件中:

string selectQuery = "SELECT * FROM Students";
SqlCommand cmdSelect = new SqlCommand(selectQuery, conn);
SqlDataReader reader = cmdSelect.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
dataGridView1.DataSource = dt;

修改记录(Update):执行更新语句来修改数据库表中已有记录的值,将ID为1的学生姓名修改为“李四”:

string updateQuery = "UPDATE Students SET Name = @Name WHERE ID = @ID";
SqlCommand cmdUpdate = new SqlCommand(updateQuery, conn);
cmdUpdate.Parameters.AddWithValue("@Name", "李四");
cmdUpdate.Parameters.AddWithValue("@ID", 1);
int rowsUpdated = cmdUpdate.ExecuteNonQuery();
if (rowsUpdated > 0)
{
    MessageBox.Show("记录更新成功!");
}
else
{
    MessageBox.Show("记录更新失败!");
}

4、界面设计:在窗体上添加相应的控件,如TextBox用于输入数据,Button用于触发操作,DataGridView用于显示查询结果等,通过设置控件的属性和编写事件处理程序来实现用户与界面的交互。

5、异常处理:在数据库操作过程中,可能会发生各种异常,如连接失败、SQL语法错误等,需要使用try-catch块来捕获和处理异常,以提高程序的稳定性和可靠性。

try
{
    // 数据库操作代码
}
catch (Exception ex)
{
    MessageBox.Show("操作出错:" + ex.Message);
}
finally
{
    if (conn.State == ConnectionState.Open)
    {
        conn.Close();
    }
}

6、完整示例:以下是一个简单的C#窗体应用程序示例,实现了对Students表的增删查改操作:

| 功能 | 代码示例 |

| –| –|

| 增加记录 | “`csharp

private void btnAdd_Click(object sender, EventArgs e)

string name = txtName.Text;

int age = int.Parse(txtAge.Text);

string insertQuery = "INSERT INTO Students (Name, Age) VALUES (@Name, @Age)";

SqlCommand cmd = new SqlCommand(insertQuery, conn);

cmd.Parameters.AddWithValue("@Name", name);

cmd.Parameters.AddWithValue("@Age", age);

try

{

int rowsAffected = cmd.ExecuteNonQuery();

if (rowsAffected > 0)

{

MessageBox.Show("记录添加成功!");

LoadData(); // 重新加载数据显示到DataGridView中

}

else

{

MessageBox.Show("记录添加失败!");

}

}

catch (Exception ex)

{

MessageBox.Show("操作出错:" + ex.Message);

}

“` |

| 删除记录 | “`csharp

private void btnDelete_Click(object sender, EventArgs e)

int id = int.Parse(txtID.Text);

string deleteQuery = "DELETE FROM Students WHERE ID = @ID";

SqlCommand cmdDelete = new SqlCommand(deleteQuery, conn);

cmdDelete.Parameters.AddWithValue("@ID", id);

try

{

int rowsDeleted = cmdDelete.ExecuteNonQuery();

if (rowsDeleted > 0)

{

MessageBox.Show("记录删除成功!");

LoadData(); // 重新加载数据显示到DataGridView中

}

else

{

MessageBox.Show("记录删除失败!");

}

}

catch (Exception ex)

{

MessageBox.Show("操作出错:" + ex.Message);

}

“` |

| 查询记录 | “`csharp

private void LoadData()

string selectQuery = "SELECT * FROM Students";

SqlCommand cmdSelect = new SqlCommand(selectQuery, conn);

SqlDataReader reader = cmdSelect.ExecuteReader();

DataTable dt = new DataTable();

dt.Load(reader);

dataGridView1.DataSource = dt;

“` |

| 修改记录 | “`csharp

private void btnUpdate_Click(object sender, EventArgs e)

int id = int.Parse(txtID.Text);

string name = txtName.Text;

string updateQuery = "UPDATE Students SET Name = @Name WHERE ID = @ID";

SqlCommand cmdUpdate = new SqlCommand(updateQuery, conn);

cmdUpdate.Parameters.AddWithValue("@Name", name);

cmdUpdate.Parameters.AddWithValue("@ID", id);

try

{

int rowsUpdated = cmdUpdate.ExecuteNonQuery();

if (rowsUpdated > 0)

{

MessageBox.Show("记录更新成功!");

LoadData(); // 重新加载数据显示到DataGridView中

}

else

{

MessageBox.Show("记录更新失败!");

}

}

catch (Exception ex)

{

MessageBox.Show("操作出错:" + ex.Message);

}

“` |

7、注意事项:在实际开发中,还需要考虑一些其他因素,如数据的验证和合法性检查、用户权限管理、数据库性能优化等,不同的数据库可能需要使用不同的客户端库和连接字符串格式,需要根据实际情况进行调整。

0