我在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'
我做错了什么?
答案 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;
}
}