在C#中添加数据库记录通常涉及以下步骤:
1、建立与数据库的连接。
2、创建并配置数据库命令,例如SQL插入语句。
3、执行命令以将数据插入到数据库中。
4、处理任何可能出现的异常。
5、关闭数据库连接。
以下是一个示例代码,展示如何在C#中使用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;"; // 要插入的数据 string name = "John Doe"; int age = 30; // 创建SQL插入语句 string insertQuery = "INSERT INTO Persons (Name, Age) VALUES (@name, @age)"; // 使用using语句确保连接正确关闭 using (SqlConnection connection = new SqlConnection(connectionString)) { try { // 打开数据库连接 connection.Open(); // 创建SQL命令对象 using (SqlCommand command = new SqlCommand(insertQuery, connection)) { // 添加参数到命令对象 command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@age", age); // 执行命令,插入数据 int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"Rows affected: {rowsAffected}"); } } catch (Exception ex) { // 处理异常 Console.WriteLine($"Error: {ex.Message}"); } } } }
在这个例子中,我们首先定义了一个数据库连接字符串,然后创建了一个简单的SQL插入语句,通过SqlCommand
对象,我们将参数化的查询与实际的值结合起来,并通过调用ExecuteNonQuery
方法来执行这个命令,如果操作成功,它将返回受影响的行数,否则将抛出异常。
Q1: 如何更改上面的代码以使用存储过程而不是直接的SQL语句?
A1: 要使用存储过程代替直接的SQL语句,你需要修改SQL命令文本为存储过程的名称,并且可能需要调整参数的传递方式(取决于存储过程的定义),如果你有一个名为usp_InsertPerson
的存储过程,你可以这样改写代码:
string insertProcedure = "usp_InsertPerson"; using (SqlCommand command = new SqlCommand(insertProcedure, connection)) { command.CommandType = CommandType.StoredProcedure; // 指定这是一个存储过程 command.Parameters.AddWithValue("@name", name); command.Parameters.AddWithValue("@age", age); int rowsAffected = command.ExecuteNonQuery(); Console.WriteLine($"Rows affected: {rowsAffected}"); }
Q2: 如果我想一次插入多条记录怎么办?
A2: 如果你想一次插入多条记录,有几种方法可以做到,一种方法是构建一个包含多个值的批量插入语句,另一种方法是循环执行多次单条插入命令,还有一种更高效的方式是使用表值参数或者XML参数来传递多条记录给单个存储过程或批处理命令,不过,这通常需要更复杂的设置和可能的性能考量,对于大量数据的插入,考虑使用专门的库或工具,如Entity Framework Core的批量操作功能或者Dapper的多记录插入特性。