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

相关推荐
struggle20251 小时前
RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上
数据库·typescript·neo4j
伤不起bb2 小时前
Redis 哨兵模式
数据库·redis·缓存
卑微的Coder2 小时前
Redis Set集合命令、内部编码及应用场景(详细)
java·数据库·redis
2501_915373882 小时前
Redis线程安全深度解析:单线程模型的并发智慧
数据库·redis·安全
呼拉拉呼拉2 小时前
Redis知识体系
数据库·redis·缓存·知识体系
霖檬ing2 小时前
Redis——主从&哨兵配置
数据库·redis·缓存
卜及中5 小时前
【Redis/2】核心特性、应用场景与安装配置
数据库·redis·缓存
LucianaiB6 小时前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
Eiceblue6 小时前
Python读取PDF:文本、图片与文档属性
数据库·python·pdf
安木夕7 小时前
C#-Visual Studio宇宙第一IDE使用实践
前端·c#·.net