1

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

非静的フィールド、メソッド、またはプロパティ'WebApplication1.Classes.Connections.DBConn'にはオブジェクト参照が必要です

私は何が間違っているのですか?

4

8 に答える 8

3

あなたの分野はそうではありませんstatic。このように呼び出すには:

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

次のようにフィールドを宣言する必要があります。

public static string DBConn = "etc";

このようなクラスの場合、クラス全体staticを実際に宣言することをお勧めします。詳細については、この記事をご覧ください。

于 2012-05-04T19:41:43.180 に答える
1

修正するには、代わりに静的にすることでエラーメッセージをたどるだけです。

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

この式Classes.Connections.DBConnは静的参照であるため(のインスタンスはありませんConnectinos)、この方法でアクセスする場合は静的にする必要があります。

于 2012-05-04T19:41:10.090 に答える
1

試す

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

それが見えない理由はあなたがそれを作らなければならないからですstatic

于 2012-05-04T19:41:41.277 に答える
1

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

namespace WebApplication1.Classes
{
 public static class Connections
 {
   public static string DBConn = ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
 }
}
于 2012-05-04T19:42:19.957 に答える
1

変数は静的ではないため、次のようにクラスConnectionsをインスタンス化する必要があります。

Connections x = new Connections();

その後、経由でアクセスできるようになります

x.DBConn

他の解決策は、変数を静的にすることです

public static string DBConn=...
于 2012-05-04T19:42:37.183 に答える
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示されている他の例と同様に、アプリケーション全体の設定用のクラスを作成することは広く受け入れられている方法です。

于 2012-05-04T19:43:06.983 に答える
1

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

クラスをインスタンス化する理由もない場合は、クラスと変数の両方を静的としてマークする必要があります。

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

DBConn変数の静的変数を使用すると、クラス自体から(つまり、インスタンスなしで)アクセスできます。Connectionsクラスのstaticは、インスタンス化する理由がないため、クラスがインスタンス化されるのを防ぎます。

于 2012-05-04T19:44:51.463 に答える
1

あなたは2つのことをすることができます:

1)クラスをインスタンス化する

Connections c = new Connections();

次に使用しますc.DbConn

2)メソッドを静的にする

  namespace WebApplication1.Classes
  {
    public class Connections
    {
      public static string DBConn = 
          ConfigurationManager.ConnectionStrings["HomeDB"].ConnectionString;
    }
  }
于 2012-05-04T19:46:05.867 に答える