C#使用SqlConnection实现SQL Server数据库增删改查示例
在C#应用程序开发中,与SQL Server数据库进行交互是常见的核心需求。本文通过一个完整的Windows Forms示例,展示如何利用ADO.NET组件(如SqlConnection、SqlCommand)编写高效的增删改查(CRUD)代码,涵盖从建立连接到执行SQL语句的完整流程。
环境准备与连接配置
在进行数据库操作前,需确保已引入必要的命名空间,主要包括 System.Data.SqlClient 用于数据库连接,以及界面交互所需的 System.Windows.Forms。核心的连接参数通常定义为一个字符串,包含服务器地址、用户ID、密码及目标数据库名。
using System;
using System.Data;
using System.Data.SqlClient;
// ... 其他UI相关命名空间
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// 连接字符串定义:server=IP地址;uid=用户名;pwd=密码;database=库名
private string GetConnectionString()
{
return "server=127.0.0.1;uid=sa;pwd=123654;database=libbook;Trusted_Connection=no";
}
// ... 方法实现见下文
}
}
第1步:执行数据查询
查询操作通常涉及将数据库返回的结果集绑定到UI控件(如DataGrid)。以下代码展示了如何通过 SqlDataAdapter 填充 DataSet 并刷新界面。
- 目的:获取
图书借阅表中的所有记录。 - 入口:按钮点击事件
button1_Click。 - 动作:
- 初始化连接对象
SqlConnection并打开连接。 - 创建
SqlCommand指定SELECT * FROM 图书借阅命令。 - 使用
SqlDataAdapter的Fill方法将数据载入DataSet。 - 设置
DataGrid1.DataSource显示第一张表。
- 初始化连接对象
- 注意:原代码示例中存在
SelectAdapter.SelectCommand.ExecuteNonQuery()调用,该API主要用于非查询类SQL(如INSERT/UPDATE),在纯SELECT场景下不应直接调用,应依赖Fill方法获取数据。
运行后,若连接成功,界面上的数据网格将展示当前表的内容:
C# WinForm应用成功渲染查询数据:
第2步:执行数据添加(Insert)
向表中插入新记录时,需注意主键约束。如果 借阅编号 被设置为自增列(IDENTITY),则不应在SQL语句中手动赋值,否则会导致错误。
正常插入流程
针对除主键外的其他字段(如图书编号、读者编号),通过拼接变量构建 INSERT 语句:
string MyInsert = "insert into 图书借阅 (图书编号,读者编号,续借次数) values ('"
+ Convert.ToString(textBox2.Text)
+ "','" + Convert.ToString(textBox3.Text)
+ "','"+Convert.ToInt32(textBox4.Text)+ "')";
当执行此操作时,数据库会自动生成下一条 借阅编号:
插入异常排查
如果在插入数据时指定了不存在的关联值(如引用了不存在的图书编号),可能会触发外键约束或业务逻辑错误。例如,尝试插入不存在的外键值导致出错:
修正数据后,再次执行插入操作可看到成功提示或数据刷新:
第3步:执行数据更新(Update)
更新操作通过 UPDATE 语句修改特定行的字段值。关键是要准确编写 WHERE 子句,防止误修多行数据。
本例演示如何将某条记录的 操作员 字段修改为“王老师”,条件匹配对应的 借阅编号:
string MyUpdate = "Update 图书借阅 set 操作员='" + textBox2.Text + "' where 借阅编号='" + textBox1.Text + "'";
执行成功后,数据库内容即发生相应变更:
第4步:执行数据删除(Delete)
删除记录同样需要谨慎使用 DELETE 语句配合明确的 WHERE 条件。在执行前建议备份重要数据。
本例演示删除 借阅编号 为31的记录:
string MyDelete = "Delete from 图书借阅 where 借阅编号=" + textBox1.Text;
执行完毕后,该条记录将从表中移除:
排错与建议
- SQL注入风险:上述示例为了直观展示原理,使用了字符串拼接方式构建SQL语句。在实际生产环境中,务必使用
SqlParameter进行参数化查询,以防御SQL注入攻击。 - 资源管理:示例中手动调用了
Open()和Close()。建议在代码中使用using语句包裹SqlConnection,确保即使发生异常也能自动释放连接资源。 - 事务处理:对于涉及多个步骤的复杂操作(如转账、批量插入),应引入
SqlTransaction以保证数据的一致性。
以上就是C#访问SQL Server数据库进行增删改查的详细内容,更多关于C#数据库编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













