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

问题描述 投票:0回答:5

我正在建立一个.net项目,该项目被称为生成其他网页。基本上是一个真正的CODE BEHIND页面。没有/没有可用的webconfig文件时,如何在类库文件上建立连接?

c# .net asp.net visual-studio visual-studio-2008
5个回答
6
投票

在这种情况下,我将创建一个派生自System.Web.UI.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="MyConnectionString" value="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"/>
</appSettings>

现在您可以拥有一个web.config文件,其中的连接字符串易于阅读。您可以将此“基本页面”存储在类库中,没问题。只要您从其继承的网页正在使用带有连接字符串的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文件中读取。听起来您可能希望将连接和数据访问代码放在类库中,以实现数据和内容的良好分离。希望这会有所帮助!


1
投票

有几种解决方法:

1)如果类库确实要生成网页,则它可能会与web.config一起部署在服务器上,因此可以使用web.config文件的属性。如果您不想使用ConnectionString部分,则只需使用连接字符串进行一个appSetting即可。

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

取决于数据库的类型,您将使用System.Data以及可能的某些子命名空间来使此工作有效。

2)您可以将连接字符串硬编码为代码。丑陋,但在紧要关头仍可使用。

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


0
投票

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

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


0
投票

是否将从ASP.net站点调用您的库?如果是这样,您仍然可以使用相同的方法来访问应用程序设置。否则,您可能需要使用某种app.config来放置此前端。


0
投票

而且,除非您使用的ORM需要使用它来获取一些信息,否则大多数类库中的配置都不需要连接。当您运行Thing时,将使用调用应用程序的配置,因此它将从web.config或其他内容中获取配置。

© www.soinside.com 2019 - 2024. All rights reserved.