2013-01-25 60 views
-4

我想执行10次查询以获得随机值, 但我的代码从未停止,
它保持循环,并且没有响应。如何在C中循环sql查询#

这是我的代码

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次工作。

+2

什么不在这里工作? – Tigran

+0

那么,*不*工作?请描述你的整个问题和问题。 –

+3

你真的需要使用查询吗?为什么不从c#中使用普通的随机数? – GeorgeVremescu

回答

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 
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 (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