C# 实现 SQL Server 的增删改查操作

SQL Server 简介

SQL Server 是微软公司开发的关系型数据库管理系统(RDBMS),主要用于数据存储和管理。它支持 SQL 查询语言,并提供了事务处理、数据安全、备份与恢复以及高可用性等关键功能。SQL Server 适用于各种规模的企业应用,能够处理大数据量和高并发的需求,并集成了报表服务、分析服务等高级功能。

本文将介绍如何使用 C# 实现对 SQL Server 数据库的增、删、改、查(CRUD)操作。以下是示例代码:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace SQLServerTest
{
    class Program
    {
        // 数据库连接字符串
        static string connectionString = "Server=.;Database=SchoolDB;User Id=sa;Password=saabc123;";

        static void Main(string[] args)
        {
             以下是各种操作的示例,当前被注释掉,可以根据需要启用

             增加操作
            //AddStudent("John Doe", 20, "A");

             修改操作
            //UpdateStudent(1, "John Doe", 21, "B");

             删除操作
            //DeleteStudent(1);

            // 查找所有学生
            GetStudents();
            
            // 等待用户按键后退出程序
            Console.ReadKey();
        }

        // 增加学生
        static void AddStudent(string name, int age, string grade)
        {
            // 定义SQL插入语句
            string query = "INSERT INTO Students (Name, Age, Grade) VALUES (@Name, @Age, @Grade)";

            // 使用using语句来自动管理数据库连接
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                // 创建SQL命令对象,绑定查询语句
                SqlCommand cmd = new SqlCommand(query, conn);
                
                // 添加参数,防止SQL注入
                cmd.Parameters.AddWithValue("@Name", name);
                cmd.Parameters.AddWithValue("@Age", age);
                cmd.Parameters.AddWithValue("@Grade", grade);

                // 打开连接
                conn.Open();
                
                // 执行插入命令,不返回任何数据
                cmd.ExecuteNonQuery();
                
                // 输出操作成功的信息
                Console.WriteLine($"Student {name} added.");
            }
        }

        // 查找所有学生
        static void GetStudents()
        {
            // 定义SQL查询语句,查询所有学生
            string query = "SELECT * FROM Students";

            // 使用using语句来自动管理数据库连接
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                // 创建一个SQL数据适配器,用于执行查询并填充数据表
                SqlDataAdapter da = new SqlDataAdapter(query, conn);
                
                // 创建数据表对象来存储查询结果
                DataTable dt = new DataTable();
                
                // 填充数据表
                da.Fill(dt);

                // 输出查询结果
                Console.WriteLine("\nStudents List:");
                // 遍历数据表的每一行
                foreach (DataRow row in dt.Rows)
                {
                    // 输出每个学生的信息
                    Console.WriteLine($"Id: {row["Id"]}, Name: {row["Name"]}, Age: {row["Age"]}, Grade: {row["Grade"]}");
                }
            }
        }

        // 更新学生信息
        static void UpdateStudent(int id, string name, int age, string grade)
        {
            // 定义SQL更新语句
            string query = "UPDATE Students SET Name = @Name, Age = @Age, Grade = @Grade WHERE Id = @Id";

            // 使用using语句来自动管理数据库连接
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                // 创建SQL命令对象,绑定更新语句
                SqlCommand cmd = new SqlCommand(query, conn);
                
                // 添加参数,防止SQL注入
                cmd.Parameters.AddWithValue("@Id", id);
                cmd.Parameters.AddWithValue("@Name", name);
                cmd.Parameters.AddWithValue("@Age", age);
                cmd.Parameters.AddWithValue("@Grade", grade);

                // 打开连接
                conn.Open();
                
                // 执行更新命令,返回受影响的行数
                int rowsAffected = cmd.ExecuteNonQuery();
                
                // 输出操作结果
                if (rowsAffected > 0)
                {
                    Console.WriteLine($"Student with Id {id} updated.");
                }
                else
                {
                    Console.WriteLine($"No student found with Id {id}.");
                }
            }
        }

        // 删除学生
        static void DeleteStudent(int id)
        {
            // 定义SQL删除语句
            string query = "DELETE FROM Students WHERE Id = @Id";

            // 使用using语句来自动管理数据库连接
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                // 创建SQL命令对象,绑定删除语句
                SqlCommand cmd = new SqlCommand(query, conn);
                
                // 添加参数,防止SQL注入
                cmd.Parameters.AddWithValue("@Id", id);

                // 打开连接
                conn.Open();
                
                // 执行删除命令,返回受影响的行数
                int rowsAffected = cmd.ExecuteNonQuery();
                
                // 输出操作结果
                if (rowsAffected > 0)
                {
                    Console.WriteLine($"Student with Id {id} deleted.");
                }
                else
                {
                    Console.WriteLine($"No student found with Id {id}.");
                }
            }
        }
    }
}

代码解释:

1.数据库连接字符串:connectionString 用于定义与 SQL Server 数据库的连接信息,如服务器地址、数据库名称、用户名和密码等。

2.AddStudent 方法:此方法用于将新的学生信息(姓名、年龄、成绩)插入到 Students 表中。它使用了 SQL 插入语句和参数化查询,以避免 SQL 注入。

3.GetStudents 方法:此方法从 Students 表中查询所有学生的信息,并使用 SqlDataAdapter 将查询结果填充到 DataTable 中,再通过循环遍历并显示每一行数据。

4.UpdateStudent 方法:此方法用于更新指定学生的信息。它接受学生的 Id、姓名、年龄和成绩,然后执行 SQL 更新语句。如果更新成功,打印提示信息;如果未找到该学生,提示无效的 ID。

5.DeleteStudent 方法:此方法删除指定 ID 的学生记录。它同样使用参数化查询来防止 SQL 注入。如果删除成功,显示相关提示;否则,提示没有找到该学生。

总结

通过 C# 结合 ADO.NET,可以非常方便地实现对 SQL Server 数据库的增删改查操作。在实际开发中,可以根据需求进一步封装数据库操作,提升代码的可维护性与扩展性。


源码地址:https://download.csdn.net/download/weixin_44643352/90059354

相关推荐
数据库砖家14 分钟前
YashanDB 知识库|轻松打通多库数据,YashanDB DBLink 使用指南!
数据库
二进制_博客15 分钟前
高德MCP制作旅游攻略
数据库·旅游
数据库砖家16 分钟前
YashanDB 知识库|如何用闪回功能救回误删的数据?全流程实战演示
数据库
码观天工18 分钟前
.NET 原生驾驭 AI 新基建实战系列(五):Milvus ── 大规模 AI 应用的向量数据库首选
c#·.net·milvus·向量数据库·高性能
数据库砖家19 分钟前
YashanDB 知识库|手把手教你回收表空间,释放磁盘的正确姿势!
数据库
一只栖枝25 分钟前
关于OCP认证:有Oracle和MySQL两种
数据库·mysql·oracle·开闭原则·数据管理·ocp认证
小Tomkk38 分钟前
StarRocks SRCA 考试心得总结
数据库·数据库 starrocks·srca
千千寰宇1 小时前
[数据库/SQL] 浅谈DDL、DSL、DCL、DML、DQL
数据库
XiaoyuEr_66881 小时前
C#中属性和字段的区别
开发语言·c#