如何编写ASP.NET数据库查询代码?C实现示例详解
- 技术教程
- 2026-02-10
- 2145
在 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 包:

- 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


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 参数化(如上例)
最佳实践建议:
- 连接管理:始终使用 using 语句确保连接关闭
- 配置分离:将连接字符串存储在 appsettings.json 或 Web.config 中 // appsettings.json "ConnectionStrings": { "DefaultConnection": "Server=.;Database=MyDB;Trusted_Connection=True;" }
- 异步操作:在高并发场景使用异步方法(ExecuteReaderAsync, ToListAsync)
- 错误处理:添加 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
根据您的项目规模和团队熟悉度选择合适的数据库访问方式。