我可以在类库项目中创建数据库连接吗?

问题描述:

我正在设置一个被称为生成其他网页的.net项目。基本上是一个真正的CODE BEHIND页面。当没有webconfig文件存在/可用时,如何关于在类库文件上建立连接?我可以在类库项目中创建数据库连接吗?

在这种情况下,我会创建一个从System.Web.UI.Page派生的'Base Page'。在这个页面上,你可以创建一个名为'ConnectionString'的属性。您将拥有您创建的所有网页都从此页面继承。

例子:

public partial class BasePage : System.Web.UI.Page 
{ 
    protected string ConnectionString 
    { 
     get 
     { 
      return System.Configuration.ConfigurationSettings.AppSettings["MyConnectionString"]; 
     } 
    } 

} 

而且在你的web.config

<appSettings> 
     <!-- Connection String --> 
     <add key="ConnectionString" value="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"/> 
</appSettings> 

现在你可以有,很容易读取的连接字符串web.config文件。你可以将这个'Base Page'存储在你的类库中,没问题。只要您的网页继承它正在使用带连接字符串的web.config文件。

之后,使用该字符串进行连接是一件简单的事情。你可以通过多种方式做到这一点,无论是在你的网页,或在单独的课程(我建议分开的课程)。在这种情况下,如果你有一个单独的类,你就需要在ConnectionString属性传递给你的连接功能:

public void ExecuteQuery(string connectionString, string sql) 
     { 
      using (System.Data.SqlClient.SqlConnection theConnection = new System.Data.SqlClient.SqlConnection(connectionString)) 
      using (System.Data.SqlClient.SqlCommand theCommand = new System.Data.SqlClient.SqlCommand(sql, theConnection)) 
      { 
       theConnection.Open(); 
       theCommand.CommandType = CommandType.Text; 
       theCommand.ExecuteNonQuery(); 
      } 
     } 

,或者你可以创建一个不带连接字符串参数的功能,只是读来自web.config文件。这听起来像你可能想要将连接和数据访问代码放在类库中,以实现数据和内容的良好分离。希望这可以帮助!

System.Data命名空间。如果使用SQL Server,则为SQLConnection对象。

我使用应用程序数据块进行数据访问b/c我认为这是一个节省时间。该框架非常适合SQL Server访问。

您的图书馆是否会从一个ASP.net网站被调用?如果是这样,您仍然可以使用相同的方法来访问应用程序设置。否则,你可能需要某种app.config,无论你在这个前端做什么。

另外,在大多数类库中,您不需要在配置中进行连接,除非您使用的ORM需要使用它来获取某些信息。调用应用程序的配置将在你运行这个东西的时候被使用,所以它会从web.config或其他东西中取出配置。

有几种方法来解决这个问题:

1)如果你是类库是真的要生成网页,那么它可能会被部署在web.config中的服务器上,因此可以使用web.config文件的属性。如果您不想使用ConnectionString部分,那么您可以使用连接字符串进行appSetting。

这样做的好处是,对于不同的环境(测试,部署等),很容易更改或使用不同的连接字符串。如果您决定在另一种应用中使用类库,则可以使用具有相同设置的app.config文件。

根据数据库的类型,您将使用System.Data以及可能的一些子命名空间来实现此功能。

2)您可以将连接字符串硬编码到代码中。丑陋,但可以在一个捏。

3)你可以使用一个实体框架来帮助你并减少你必须做的工作。