当前位置:首页 > 技术教程 > 正文

如何编写ASP.NET数据库查询代码?C实现示例详解

在 ASP.NET 中执行数据库查询有多种方式,以下是常见的几种方法及代码示例:

使用 ADO.NET(原生数据库访问)

// 连接字符串(通常放在Web.config中) string connectionString = "Server=.;Database=YourDB;Integrated Security=True;"; using (SqlConnection conn = new SqlConnection(connectionString)) { string query = "SELECT * FROM Users WHERE Age > @Age"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@Age", 18); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string name = reader["Name"].ToString(); int age = Convert.ToInt32(reader["Age"]); // 处理数据... } reader.Close(); }

使用 Entity Framework Core(ORM)

安装 NuGet 包:

如何编写ASP.NET数据库查询代码?C实现示例详解 第1张

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Design

// 定义实体类 public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } // DbContext类 public class AppDbContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlServer("Server=.;Database=YourDB;Integrated Security=True;"); } // 在Controller或服务中使用 using (var context = new AppDbContext()) { // 查询所有年龄大于18的用户 var users = context.Users .Where(u => u.Age > 18) .ToList(); // 异步查询示例 var usersAsync = await context.Users .Where(u => u.Name.Contains("John")) .ToListAsync(); }

使用 Dapper(轻量级ORM)

安装 NuGet 包: Dapper

如何编写ASP.NET数据库查询代码?C实现示例详解 第2张

如何编写ASP.NET数据库查询代码?C实现示例详解 第3张

using Dapper; string connectionString = "Server=.;Database=YourDB;Integrated Security=True;"; using (SqlConnection conn = new SqlConnection(connectionString)) { // 简单查询 var users = conn.Query<User>("SELECT * FROM Users WHERE Country = @Country", new { Country = "USA" }); // 多参数查询 var filteredUsers = conn.Query<User>( "SELECT * FROM Users WHERE Age > @MinAge AND Active = @IsActive", new { MinAge = 21, IsActive = true } ); }

参数化查询(防止SQL载入)

// ADO.NET 参数化 cmd.Parameters.AddWithValue("@param", value); // EF Core 自动参数化 var user = context.Users.FirstOrDefault(u => u.Email == email); // Dapper 参数化(如上例)

最佳实践建议:

  1. 连接管理:始终使用 using 语句确保连接关闭
  2. 配置分离:将连接字符串存储在 appsettings.json 或 Web.config 中 // appsettings.json "ConnectionStrings": { "DefaultConnection": "Server=.;Database=MyDB;Trusted_Connection=True;" }
  3. 异步操作:在高并发场景使用异步方法(ExecuteReaderAsync, ToListAsync)
  4. 错误处理:添加 try-catch 处理数据库异常

Web.config 连接字符串配置示例

<configuration> <connectionStrings> <add name="MyDB" connectionString="Server=.;Database=YourDB;Integrated Security=True;" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>

在代码中获取配置的连接字符串

// ASP.NET Core string connString = Configuration.GetConnectionString("MyDB"); // ASP.NET Framework string connString = WebConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;

选择方案的建议:

  • 需要高性能/简单查询 → Dapper
  • 需要复杂业务逻辑/领域驱动 → Entity Framework Core
  • 需要完全控制SQL → ADO.NET

根据您的项目规模和团队熟悉度选择合适的数据库访问方式。

0