利用C#对SQL Server数据库进行操作并返回标识列序号

本文介绍了如何使用C#进行数据库的CRUD操作,包括插入、查询、更新和删除,强调了参数化查询的重要性。同时,讲解了在SQL Server中如何返回新插入行的标识列序号,推荐使用`SCOPE_IDENTITY()`而非`@@IDENTITY`以避免触发器等影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、利用C#对数据库进行增删查改

在C#中,对数据库进行增删查改操作(通常称为CRUD操作:创建、读取、更新和删除),可以通过多种方式实现,但最通用的是使用ADO.NET。

1.1 创建(增,Insert)

直接看程序讲解:
假设我们有一个名为 Students 的数据库表,它有两列:NameAge。我们想要将一个新学生的信息插入这个表中。假设新学生的名字是 “Alice”,年龄是 20。以下是具体的代码示例:

string connectionString = " "Server=DESKTOP-1JMUPMG\\MSSQLSERVER1;DataBase=StudentManageDB;Uid=sa;Pwd=151423qwe,+"";
string insertQuery = "INSERT INTO Students (Name, Age) VALUES (@name, @age)";

using (SqlConnection conn = new SqlConnection(connectionString))
{
   
    SqlCommand command = new SqlCommand(insertQuery, conn);
    // 添加参数并赋值
    command.Parameters.AddWithValue("@name", "Alice");
    command.Parameters.AddWithValue("@age", 20);

    // 打开连接并执行插入命令
    conn.Open();
    int result = command.ExecuteNonQuery();

    // result 为受影响的行数
    if (result > 0)
    {
   
        Console.WriteLine("Insert successful.");
    }
    else
    {
   
        Console.WriteLine("Insert failed.");
    }
}

在这段代码中:

  • connectionString 应包含连接到数据库所需的所有信息。它通常包括服务器的地址、数据库的名称、以及用于连接数据库的凭据(用户名和密码)。
    这里有疑问的话,看这篇:C#访问数据库

  • insertQuery 是要执行的SQL插入语句。

  • 使用 using 语句来确保 SqlConnection 对象在使用完毕后会被正确地关闭和释放。

  • SqlCommand 对象上,使用 Parameters.AddWithValue 方法来添加两个参数:@name@age,它们分别被设置为字符串 “Alice” 和整数 20。

  • 然后,打开数据库连接,执行命令,并检查返回的 result。如果 result 大于 0,表示有行受到了影响,即数据插入成功。如果没有,则表示插入失败。

使用另一种方式再写一个例子,假设这个表有很多列,代表了成员信息,也可这样增加

 string sql = "insert into Students(StudentName,Gender,Birthday,StudentIdNo,Age,PhoneNumber,StudentAddress,ClassId)";
                sql += "values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')";
                sql = string.Format(sql, "路飞", "男", "2012-01-01", 410621201201010908, 25, "13666668888", "辽宁", 1);

只不过这样写虽然更直接,但是有几个问题:
//
SQL注入风险:最严重的问题是这种方式可能会导致SQL注入攻击。如果变量值是从不可信的用户输入中获取的,攻击者可以在输入中注入恶意SQL代码,这可能导致数据泄露、数据损坏或其他安全问题。使用参数化查询(如使用@parameter)可以有效防止SQL注入。

. 类型转换问题:在字符串中直接插入变量值可能会导致类型转换错误。例如,日期和数字可能需要特定的格式才能正确插入到数据库中。参数化查询会处理数据类型转换,减少出错的可能性。

. 代码可读性和维护性:尽管直接插入变量值看起来在某些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值