-4

クエリを 10 回実行してランダムな値を取得したいのですが、コードが止まらず、
ループし続け、応答がありません。

これは私のコードです

int j = 0;
do {
    DataSet AVATARLINE = new DataSet();
    SqlDataAdapter AVATARLINE_1 = new SqlDataAdapter("DECLARE
            @Random INT,@Upper INT,
            @Lower INT SET @Lower = (select MIN(ID)from MastryID)SET
            @Upper = (select MAX(ID)from MastryID)+1 SELECT
            @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)SELECT @Random", connection);
    AVATARLINE_1.Fill(AVATARLINE);
    foreach (DataRow row in AVATARLINE.Tables[0].Rows)
    {
        for (int i = 0; i < AVATARLINE.Tables[0].Columns.Count; i++)
        richTextBox1.Text += row[i].ToString() + Environment.NewLine;
    }
}
while (j < 10); // 0-9

10回だけ機能させる方法を考えてください。

4

2 に答える 2

4

どうぞ:) ...jループ内でインクリメントしていないようです

int j = 0;
    do {
            DataSet AVATARLINE = new DataSet();
            SqlDataAdapter AVATARLINE_1 = new SqlDataAdapter("DECLARE @Random INT,@Upper INT,@Lower INT SET @Lower = (select MIN(ID)from MastryID)SET @Upper = (select MAX(ID)from MastryID)+1 SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)SELECT @Random", connection);
            AVATARLINE_1.Fill(AVATARLINE);
            foreach (DataRow row in AVATARLINE.Tables[0].Rows)
            {
                for (int i = 0; i < AVATARLINE.Tables[0].Columns.Count; i++)
                    richTextBox1.Text += row[i].ToString() + Environment.NewLine;
            } 
        j++; 
        }
    while (j < 10); // 0-9
于 2013-01-25T08:04:15.963 に答える
0

追加++:

int j = 0;
do {
        DataSet AVATARLINE = new DataSet();
        SqlDataAdapter AVATARLINE_1 = new SqlDataAdapter("DECLARE @Random INT,@Upper INT,@Lower INT SET @Lower = (select MIN(ID)from MastryID)SET @Upper = (select MAX(ID)from MastryID)+1 SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)SELECT @Random", connection);
        AVATARLINE_1.Fill(AVATARLINE);
        foreach (DataRow row in AVATARLINE.Tables[0].Rows)
        {
            for (int i = 0; i < AVATARLINE.Tables[0].Columns.Count; i++)
                richTextBox1.Text += row[i].ToString() + Environment.NewLine;
        }  
    }
while (++j < 10); // 0-9

インクリメントの他の方法でもj構いません。より一般的なアプローチは、for ループです。

for (int j = 0; j < 10; j++)
{
    DataSet AVATARLINE = new DataSet();
    SqlDataAdapter AVATARLINE_1 = new SqlDataAdapter("DECLARE @Random INT,@Upper INT,@Lower INT SET @Lower = (select MIN(ID)from MastryID)SET @Upper = (select MAX(ID)from MastryID)+1 SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)SELECT @Random", connection);
    AVATARLINE_1.Fill(AVATARLINE);
    foreach (DataRow row in AVATARLINE.Tables[0].Rows)
    {
        for (int i = 0; i < AVATARLINE.Tables[0].Columns.Count; i++)
            richTextBox1.Text += row[i].ToString() + Environment.NewLine;
    }  
}

Random最後に、クラスについて読みたいと思うかもしれません: http://msdn.microsoft.com/en-us/library/system.random.aspx

于 2013-01-25T08:04:14.573 に答える