在C#中,往数据库表里插入记录通常需要使用ADO.NET或Entity Framework等数据访问技术,下面将详细介绍如何使用这两种方法来实现向数据库表中插入记录。
确保已经安装了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
方法保存更改。
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,都能有效地完成任务,希望本文能为你提供清晰的指导,帮助你在实际开发中更加得心应手。