在C#中往SQL数据库写入数据通常可以通过以下几种方式实现:
使用SqlCommand和Connection对象
1、引入命名空间:首先需要引入System.Data.SqlClient
命名空间,它包含了与SQL Server进行交互的类。
2、建立连接:创建一个SqlConnection
对象,并设置其ConnectionString
属性来指定要连接的数据库服务器、数据库名称、用户名和密码等信息。
string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"; SqlConnection connection = new SqlConnection(connectionString);
3、打开连接:调用connection.Open()
方法打开与数据库的连接。
4、创建SqlCommand对象:创建一个SqlCommand
对象,并将其Connection
属性设置为前面创建的SqlConnection
对象,然后编写要执行的SQL插入语句,并将其赋值给SqlCommand
对象的CommandText
属性,要向名为Users
的表中插入一条新记录,可以这样写:
string insertSql = "INSERT INTO Users (Name, Age, Gender) VALUES (@Name, @Age, @Gender)"; SqlCommand command = new SqlCommand(insertSql, connection);
5、添加参数:为了避免SQL注入攻击,建议使用参数化查询,通过SqlCommand
对象的Parameters
属性添加参数,并设置参数的值。
command.Parameters.AddWithValue("@Name", "Tom"); command.Parameters.AddWithValue("@Age", 25); command.Parameters.AddWithValue("@Gender", "Male");
6、执行命令:调用command.ExecuteNonQuery()
方法执行SQL插入语句,该方法返回一个整数,表示受影响的行数。
7、关闭连接:操作完成后,调用connection.Close()
方法关闭与数据库的连接,也可以使用using
语句自动管理连接的打开和关闭,
using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand(insertSql, connection)) { command.Parameters.AddWithValue("@Name", "Tom"); command.Parameters.AddWithValue("@Age", 25); command.Parameters.AddWithValue("@Gender", "Male"); int rowsAffected = command.ExecuteNonQuery(); } }
使用Entity Framework等ORM框架
1、安装和配置:首先需要在项目中安装Entity Framework相关的包,然后在项目中配置数据库连接字符串等相关信息。
2、创建模型类:根据数据库表的结构创建对应的模型类,如果有一个Users
表,包含Id
、Name
、Age
和Gender
等列,可以创建一个如下的模型类:
public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Gender { get; set; } }
3、创建DbContext派生类:创建一个继承自DbContext
的类,并在其中定义一个DbSet
属性,用于表示与数据库表的映射关系。
public class MyDbContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Your_Connection_String_Here"); } }
4、添加和保存实体:创建MyDbContext
的实例,然后创建一个新的User
对象并设置其属性值,最后调用SaveChanges()
方法将实体添加到数据库中。
using (var context = new MyDbContext()) { User newUser = new User { Name = "Tom", Age = 25, Gender = "Male" }; context.Users.Add(newUser); context.SaveChanges(); }
以下是两个相关问答FAQs:
问题1:使用SqlCommand和Connection对象写入数据时,如果连接字符串错误会导致什么结果?
解答:如果连接字符串错误,当尝试打开连接时会抛出异常,通常是SqlException
,提示无法连接到指定的数据库服务器或找不到指定的数据库等错误信息,这将导致后续的插入操作无法执行。
问题2:使用Entity Framework插入数据时,如果模型类的属性名与数据库表的列名不匹配怎么办?
解答:可以通过在模型类的属性上使用[Column("数据库列名")]
数据注释来指定与数据库列的映射关系,如果模型类中的Name
属性对应数据库表中的user_name
列,可以在Name
属性上添加[Column("user_name")]
注释来正确映射。