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

ASP.NET如何连接数据库文件?详细步骤与SqlConnection对象使用指南

在ASP.NET中访问数据库文件,通常涉及以下步骤,这里以常见的SQL Server数据库文件(.mdf)和SQLite数据库文件(.db)为例,分别说明访问方法:


访问SQL Server数据库文件 (.mdf)

配置连接字符串

在Web.config文件中添加连接字符串(使用LocalDB或SQL Server Express):

<connectionStrings> <add name="MyDBContext" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings>

  • |DataDirectory| 表示项目中的App_Data文件夹。

使用ADO.NET访问数据库

using System.Data.SqlClient; using System.Configuration; public void ReadData() { string connectionString = ConfigurationManager.ConnectionStrings["MyDBContext"].ConnectionString; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "SELECT * FROM Users"; SqlCommand cmd = new SqlCommand(sql, conn); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string name = reader["UserName"].ToString(); // 处理数据... } } }

使用Entity Framework Core(推荐)

  • 安装NuGet包:Microsoft.EntityFrameworkCore.SqlServer

  • 创建DbContext类:

    public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<User> Users { get; set; } }
  • 在Startup.cs中注册:

    public void ConfigureServices(IServiceCollection services) { services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MyDBContext"))); }
  • 在Controller中使用:

    ASP.NET如何连接数据库文件?详细步骤与SqlConnection对象使用指南 第1张

    public class UserController : Controller { private readonly AppDbContext _context; public UserController(AppDbContext context) { _context = context; } public IActionResult Index() { var users = _context.Users.ToList(); return View(users); } }

  • 访问SQLite数据库文件 (.db)

    配置连接字符串

    在Web.config中添加:

    ASP.NET如何连接数据库文件?详细步骤与SqlConnection对象使用指南 第2张

    安装SQLite NuGet包

    Install-Package System.Data.SQLite

    使用ADO.NET访问SQLite

    using System.Data.SQLite; public void ReadSQLiteData() { string connectionString = ConfigurationManager.ConnectionStrings["SQLiteDB"].ConnectionString; using (SQLiteConnection conn = new SQLiteConnection(connectionString)) { conn.Open(); string sql = "SELECT * FROM Products"; SQLiteCommand cmd = new SQLiteCommand(sql, conn); SQLiteDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { string productName = reader["ProductName"].ToString(); // 处理数据... } } }

    使用Entity Framework Core + SQLite

    • 安装NuGet包:Microsoft.EntityFrameworkCore.Sqlite
    • 配置DbContext: public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } }
    • 在Startup.cs中注册: public void ConfigureServices(IServiceCollection services) { services.AddDbContext<AppDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("SQLiteDB"))); }


    关键注意事项

    1. 文件权限

      • 确保App_Data文件夹有读写权限(IIS或开发服务器需有权限修改文件)。
    2. 数据库文件位置

      • 始终将数据库文件放在App_Data文件夹中(ASP.NET对该文件夹有特殊保护)。
      • 连接字符串技巧

        • 使用|DataDirectory|代替绝对路径,避免部署问题。
        • 示例:AttachDbFilename=|DataDirectory|data.mdf
        • 部署问题

          ASP.NET如何连接数据库文件?详细步骤与SqlConnection对象使用指南 第3张

          • 生产环境中,SQL Server建议使用完整版而非.mdf文件(性能更好)。
          • SQLite适合轻量级应用,但并发写入性能有限。
          • 安全建议

            • 不要硬编码连接字符串。
            • 敏感信息(如密码)使用aspnet_regiis加密或Azure Key Vault。
            • 其他数据库类型

              • Microsoft Access (.mdb/.accdb)

                使用OLE DB连接:

                "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|db.accdb;"
              • MySQL (.frm + 数据文件)

                使用NuGet包MySql.Data.EntityFrameworkCore,连接字符串:

                "server=localhost;database=mydb;user=root;password=12345"


              通过以上步骤,你可以灵活地在ASP.NET中操作各种数据库文件,推荐使用Entity Framework Core,它能大幅简化数据库操作并支持跨平台部署。

0