ASP.NET MVC 2 - 用户定义的数据库连接

时间:2010-06-16 13:12:57

标签: asp.net asp.net-mvc-2

我希望将我的基本DBMS软件从经典ASP移植到ASP.net - 但是用户需要输入连接细节才能连接到他们的特定DBMS服务器。

ASP.NET MVC是否完全可以实现(非常类似于ASP中的无DSN连接)。

干杯, 乔尔

1 个答案:

答案 0 :(得分:1)

问题应该是“这可能是.NET”,ASP.NET MVC不是数据库技术,而且DSN-less连接也不是ASP技术。在.NET中,ADO.NET框架允许您访问数据库资源,它可以在任何.NET代码中使用,无论是桌面,Web还是移动。

某些平台有一些专用库,.NET包括对Sql Server的本机支持,您可以获取MySql Connector for .NET等。

所有这些提供程序都是围绕ADO.NET提供程序模型构建的,您可以显式使用它们,也可以使用提供程序无关的方法。这是两个例子,第一个是Sql Server:

string connectionString = "Server=....";
using (SqlConnection connection = new SqlConnection(connectionString))
{
  using (SqlCommand command = new SqlCommand("SELECT [Name] FROM [People]")) 
  {
    connection.Open();

    using (SqlDataReader reader = command.ExecuteReader()) 
    {
      // Do something here.
    }
  }
}

在上面的示例中,我使用特定的Sql Server ADO.NET类型来创建与数据库的连接并对其执行任意查询。

如果您打算支持多个数据库平台,最好设计您的代码,以便它可以利用ADO.NET Factory类,这些类是专门用于创建平台特定类型的工厂。在下面的示例中,我使用Factory类来访问MySql Server数据库:

string connectionString = "Server=....";
DbProviderFactory factory = DbProviderFactories.GetFactory("MySql.Data");
using (DbConnection connection = factory.CreateConnection()) 
{
  connection.ConnectionString = connectionString;

  using (DbCommand command = factory.CreateCommand())
  {
    command.CommandText = "SELECT `Name` FROM Page";

    connection.Open();

    using (DbDataReader reader = command.ExecuteReader())
    {
      // Do something here.
    }
  }
}

不是一个完美的例子,但足以让你前进,但重要的是要记住,无DSN的连接不依赖于ASP或ASP.NET。

希望有所帮助。