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

相关推荐
程序员学习随笔几秒前
PostgreSQL技术内幕21:SysLogger日志收集器的工作原理
数据库·postgresql
Sun_12_21 分钟前
SQL注入(SQL lnjection Base)21
网络·数据库
秦时明月之君临天下2 分钟前
PostgreSQL标识符长度限制不能超过63字节
数据库·postgresql
woshilys4 分钟前
sql server 备份恢复
数据库·sqlserver
CodeCraft Studio4 分钟前
【实用技能】如何在 SQL Server 中处理 Null 或空值?
数据库·oracle·sqlserver
撒呼呼24 分钟前
# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
数据库·spring boot·spring·mvc·springboot
程序员shen16161131 分钟前
抖音短视频saas矩阵源码系统开发所需掌握的技术
java·前端·数据库·python·算法
夕泠爱吃糖32 分钟前
C++中如何实现序列化和反序列化?
服务器·数据库·c++
网络安全Jack43 分钟前
网络安全概论——身份认证
网络·数据库·web安全
alden_ygq1 小时前
etcd网关
服务器·数据库·etcd