2012-05-04 11 views
1

web.configに接続文字列を追加しました。 私は、文字列がそれを呼び出すクラスなさ - 私はので、私は、そのページでそれを使用することができ、このDBConnを呼び出したい私のdefault.aspx.csページから今cで別のクラスのConnectionStringを呼び出す

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

を。

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は機能しません。これは私が得るエラーです。

オブジェクト参照が非静的フィールド、メソッド、または 財産のために必要とされる「WebApplication1.Classes.Connections.DBConn」

私が間違って何をしているのですか?この式Classes.Connections.DBConnが静的​​参照ですので、あなたが作る必要がある(あなたがConnectinosのインスタンスを持っていない)

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

を:かなり多くのだけではなく、それが静的することによって、エラーメッセージに従って、固定するために

+0

静的メソッドをなぜ彼が手に入れましたdownvote ?? – PaulG

+0

@PaulG - 私は同じことを思っていました。問題ははっきりしており、すべての詳細が答えています。 – zimdanen

+0

どちらか分かりません。すでに同様の質問がありました。私は見て、見つからなかったので、1つを見つけました。 – user970225

答えて

3

あなたのフィールドがstaticないようにするために持っているので、それが表示されていない理由がある

public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString; } 
を試してみてください。あなたは、このようにフィールドを宣言する必要が

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

:このようにそれを呼び出すために、このようなクラスの場合

public static string DBConn = "etc"; 

、それは実際にはstaticとして全体のクラスを宣言することができbehooveかもしれません。詳細については、articleをご覧ください。

1

この方法でアクセスする場合は静的です。

1

は、あなたがそれstatic

+0

エラーは消えていますが、ページには何もありません。 – user970225

+0

他の何かのような音が(おそらくDBエラー)間違っていた場合は、Try Catchを使用して問題をゼロにしてください。 – PaulG

1

キーワードstaticを使用する必要があります。

あなたの変数ありえない静的なので、
namespace WebApplication1.Classes 
{ 
public static class Connections 
{ 
    public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString; 
} 
} 
1

、あなたはこのようなクラスの接続をインスタンス化する必要があります。

Connections x = new Connections(); 

その後、あなたは他の解決策は次のようになり

x.DBConn 

経由でアクセスできるようになります変数を静的にする方法

public static string DBConn=... 
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クラスを作成するために広く受け入れられている習慣だ - 示す他の例に似ています。

1

インスタンスを持たない変数を使用するには、静的宣言する必要があります。静的キーワードhereの詳細については、こちらをご覧ください。

あなたのクラスは、いずれかのインスタンス化するために理由はありません場合は、静的としてクラスと変数の両方をマークする必要があります

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

DBConn変数の静的それはクラス自体からアクセスすることができます(すなわち、インスタンスなしで)。 Connectionsクラスのstaticは、そうする理由がないので、クラスがインスタンス化されるのを防ぎます。

1

あなたは2つのことを行うことができます。

1)例えば、あなたのクラス

Connections c = new Connections(); 

を、その後c.DbConn

2使用)作る

namespace WebApplication1.Classes 
    { 
    public class Connections 
    { 
     public static string DBConn = 
      ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString; 
    } 
    } 
関連する問題