从c#中的另一个类调用ConnectionString

时间:2012-05-04 19:39:09

标签: c# sql-server class

我在web.config中添加了一个连接字符串。 我创建了一个字符串调用它的类 -

namespace WebApplication1.Classes
{
    public class Connections
    {
        public string DBConn = 
            ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
    }
}

现在从我的default.aspx.cs页面我想调用这个DBConn,这样我就可以在那个页面中使用它了。

 namespace WebApplication1
 {
     public partial class _Default : System.Web.UI.Page
     {
         protected void Page_Load(object sender, EventArgs e)
         {
             Console.WriteLine(Classes.Connections.DBConn);
         }
     }
 }

Classes.Connections.DBConn无效。这是我得到的错误。

  

非静态字段,方法或者需要对象引用   property'WebApplication1.Classes.Connections.DBConn'

我做错了什么?

8 个答案:

答案 0 :(得分:3)

您的字段不是static。为了这样称呼它:

Classes.Connections.DBConn // Using the class Connections, 
                           // not an instance of the class Connections

你必须声明这样的字段:

public static string DBConn = "etc";

对于这样一个类,你可能理所当然地将整个类声明为static。有关详细信息,请查看此article

答案 1 :(得分:1)

要修复,只需按照错误消息将其设为静态:

public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;

由于此表达式Classes.Connections.DBConn是静态引用(您没有Connectinos的实例),因此如果要以这种方式访问​​它,则需要将其设置为静态。

答案 2 :(得分:1)

尝试

public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;  }

它不可见的原因是因为你必须使它static

答案 3 :(得分:1)

您需要使用static关键字。

namespace WebApplication1.Classes
{
 public static class Connections
 {
   public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
 }
}

答案 4 :(得分:1)

由于你的变量不是静态的,你需要实例化类Connections,如下所示:

Connections x = new Connections();

然后您就可以通过

访问它了
x.DBConn

其他解决方案是使你的变量静态

public static string DBConn=...

答案 5 :(得分:1)

要在当前编写类时访问连接字符串,请执行以下操作:

using WebApplication1.Classes;

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Console.WriteLine(new Connections().DBConn);
        }
    }
}

为应用程序范围设置创建static类是一种广泛接受的做法 - 与显示的其他示例类似。

答案 6 :(得分:1)

为了使用没有实例的变量,必须将其声明为static。详细了解静态关键字here

如果你的类没有理由被实例化,你应该将类和变量都标记为静态:

namespace WebApplication1.Classes 
{ 
 public static class Connections 
 { 
   public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString; 
 } 
}

DBConn变量上的静态允许从类本身访问它(即,没有实例)。 Connections类上的static会阻止实例化类,因为没有理由这样做。

答案 7 :(得分:1)

你可以做两件事:

1)实例你的班级

Connections c = new Connections();

然后使用c.DbConn

2)使方法静态

  namespace WebApplication1.Classes
  {
    public class Connections
    {
      public static string DBConn = 
          ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
    }
  }