2016-08-23 5 views
0

forループの長さを定義する際に問題があります。 私はSQLデータベースからテーブル内の行を数えており、この数をforループの長さにします。 forループの長さとしての変数?

この

は、forループのコードです:

protected void Page_Load(object sender, EventArgs e) 
    { 

     for (int i = 0; i < A; i++) 
     { 
      System.Web.UI.HtmlControls.HtmlGenericControl createDiv = 
      new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 
      createDiv.ID = "createDiv"; 
      this.Controls.Add(createDiv); 
     } 

    } 

そして、これは私のデータベーステーブル内の行をカウントするコードです。

public void A() 
    { 
     string stmt = "SELECT COUNT(*) FROM AlgSchipInfo"; 
     int count = 0; 

     using (SqlConnection thisConnection = new SqlConnection ("DataSource=VMB-LP12;Initial Catalog=SmmsData;Integrated Security=True")) 
     { 
      using (SqlCommand cmdCount = new SqlCommand(stmt, thisConnection)) 
      { 
       thisConnection.Open(); 
       count = (int)cmdCount.ExecuteScalar(); 
       TextBox2.Text = count.ToString(); 
      } 
     } 
    } 

私は私のためのループにdivを作成することによって、私のデータベース内にあるすべての船の情報を表示するには、このを使用したいです。

長さの定義方法を教えてもらえますか?

ありがとう!

+3

'int'を返すように変更し' A'、それは 'count'を返し、私は(を<'にループのためにあなたを変更する必要があり) 'I推測?しかし、「A」はメソッドのひどい名前です。 –

+1

すべてのレコードの情報を表示する必要があるためです。それではなぜ情報を得てforeachをやるのですか? –

+0

クエリーからのデータをループに取り込み、クエリーが時間の無駄になる前にカウントし、(カウントと選択の間に行が挿入されていると)間違っている場合は、返された行の数をカウントするだけですデータのクエリ – MikeT

答えて

5

Aメソッドをforループの条件内で呼び出さないでください。ループはすべての繰り返しで実行されます。あなたのループで次に

public int A() { 
    int count = 0; 
    //do db stuff 
    return count; 
} 

この場合
int count = A(); 
for (int i = 0; i < count; i++) 
{ 
    System.Web.UI.HtmlControls.HtmlGenericControl createDiv = ... 
} 

public int A() 
{ 
    ... 
    using (... 
    using (... 
    { 
     ... 
     return count; 
    } 
} 
+0

良いアドバイスをしましたが、実際にあなたが行った変更である 'A()'の戻り値のタイプを変更して、 – MikeT

2

、単にA()リターンint代わりのvoid作る言うべき

int shipCount = A(); 

for (int i = 0; i < shipCount; i++) { 
    //make div 
} 
+0

を "クリーナー"に修正したことを光栄に思っていますか?彼がしなければそれは災害になるでしょう。 – Igor

+0

@Igorあなたの編集を見ました - 私はそれを知らなかった!私はそのビットを取り除きます – levelonehuman

+0

@Igor Disasterはこれに少しでも強く、非常に非効率的です – MikeT

1

あまりにも多くのことを^^もし ファーストテーブルAlgSchipInfoの要素の情報を表示する必要があります。データテーブル内のカウントを取得した後、これらのデータを選択するだけです。 ORMのようなもの。

DBからデータテーブルを取得したら、それをリピータまたは他の償還者にバインドしてアイテムを一覧表示します。最初からIMAOよりも効率的です。

あなたはより具体的な質問がある場合は歓迎している;)

関連する問題