在 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
根据您的项目规模和团队熟悉度选择合适的数据库访问方式。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/290145.html

