当前位置:首页 > 行业动态 > 正文

c#怎么往数据库表里插入记录

C#中插入数据库记录的方法:使用SqlConnection连接数据库,通过SqlCommand执行INSERT语句,可结合参数化查询防止SQL注入,最后提交事务完成插入操作。

在C#中,往数据库表里插入记录通常需要使用ADO.NET或Entity Framework等数据访问技术,下面将详细介绍如何使用这两种方法来实现向数据库表中插入记录。

方法一:使用ADO.NET

准备工作

确保已经安装了System.Data.SqlClient命名空间(对于SQL Server)。

建立与数据库的连接字符串。

连接到数据库并执行插入操作

以下是一个简单的示例代码,演示如何使用ADO.NET向SQL Server数据库中的表插入一条记录。

using System;
using System.Data.SqlClient;
class Program
{
    static void Main()
    {
        // 定义连接字符串
        string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
        try
        {
            // 创建连接对象
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // 打开连接
                connection.Open();
                // 定义插入的SQL语句
                string insertQuery = "INSERT INTO TableName (Column1, Column2) VALUES (@Value1, @Value2)";
                // 创建命令对象
                using (SqlCommand command = new SqlCommand(insertQuery, connection))
                {
                    // 添加参数
                    command.Parameters.AddWithValue("@Value1", "SomeValue1");
                    command.Parameters.AddWithValue("@Value2", "SomeValue2");
                    // 执行插入操作
                    int rowsAffected = command.ExecuteNonQuery();
                    Console.WriteLine($"Rows affected: {rowsAffected}");
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}

在上面的代码中:

connectionString包含连接数据库所需的信息。

使用SqlConnection对象连接到数据库。

使用SqlCommand对象执行SQL插入语句。

通过command.Parameters.AddWithValue方法添加参数,以防止SQL注入攻击。

通过command.ExecuteNonQuery方法执行插入操作,并返回受影响的行数。

方法二:使用Entity Framework

准备工作

安装Entity Framework Core包。

创建数据模型和上下文类。

配置和插入数据

以下是一个使用Entity Framework Core向数据库表中插入记录的示例。

安装Entity Framework Core包:

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

创建数据模型和上下文类:

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
public class MyContext : DbContext
{
    public DbSet<MyTable> MyTables { get; set; }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;");
    }
}
public class MyTable
{
    public int Id { get; set; }
    public string Column1 { get; set; }
    public string Column2 { get; set; }
}

编写插入数据的代码:

class Program
{
    static void Main()
    {
        using (var context = new MyContext())
        {
            // 创建新记录
            MyTable newRecord = new MyTable
            {
                Column1 = "SomeValue1",
                Column2 = "SomeValue2"
            };
            // 添加到上下文并保存更改
            context.MyTables.Add(newRecord);
            context.SaveChanges();
            Console.WriteLine("Record inserted successfully!");
        }
    }
}

在这个示例中:

MyContext继承自DbContext,用于与数据库交互。

MyTable是数据模型类,对应数据库中的表。

使用context.MyTables.Add方法添加新记录,并通过context.SaveChanges方法保存更改。

相关问答FAQs

Q1: 如果我想批量插入多条记录,应该怎么做?

A1: 使用ADO.NET时,可以在一个事务中多次执行插入命令,使用Entity Framework时,可以创建一个列表,将多个实体添加到上下文中,然后一次性调用SaveChanges方法。

context.MyTables.AddRange(newListOfEntities);
context.SaveChanges();

Q2: 如何确保插入操作的安全性,防止SQL注入?

A2: 使用参数化查询是防止SQL注入的最佳实践,无论是使用ADO.NET还是Entity Framework,都应该避免直接拼接SQL字符串,而是使用参数化查询来传递数据,这样不仅可以防止SQL注入,还能提高代码的可读性和可维护性。

小编有话说

在C#中向数据库表里插入记录是一项常见的操作,掌握不同的方法可以帮助开发者根据具体需求选择合适的技术方案,无论是传统的ADO.NET还是现代的Entity Framework,都能有效地完成任务,希望本文能为你提供清晰的指导,帮助你在实际开发中更加得心应手。

0