0

这段代码只能从 0 循环到 3。当我将变量 i 增加到 4 或更多时,它不会带来结果。我有将近 700 条描述要查询。我怎样才能做到这一点?这是我的代码。谢谢,

SqlCommandBuilder myBuilder;
DataSet mySet;
DataTable myTable;
SqlDataReader myReader = null;
SqlCommand myCommand = null;

private void button1_Click(object sender, EventArgs e)
{
    String str = "";
    int specRowCount = dataGridView2.Rows.Count;

    mySet = new DataSet();

    try
    {
        myConnection.Open();
        for (int i = 0; i <= 3; i++)
        {
           str = "use " + textBox4.Text + " SELECT * FROM myTable where myRule=1 and myFlag=1 and description='" + dataGridView2.Rows[i].Cells[0].Value.ToString() + "'";
            //myCommand = new SqlCommand(str, myConnection);
            myAdapter = new SqlDataAdapter(str, myConnection);
            //myBuilder = new SqlCommandBuilder(myAdapter);

            myAdapter.Fill(mySet, "t_rules");  
        }
        myTable = mySet.Tables["t_rules"];
        myConnection.Close();

        dataGridView1.DataSource = mySet.Tables["t_rules"];

        dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    }
    catch (Exception ex) { Console.WriteLine(ex.ToString()); }  
}
4

2 回答 2

0

增加计数器时,此代码无法返回更多结果的唯一方法是让SELECT语句返回零行。由于某种原因,该查询排除了您正在查询的附加行。

将计数器增加到 700,您可能会或可能不会获得更多数据,这取决于此查询返回的内容。

但在一天结束时,查询返回零行。

于 2013-07-19T12:19:38.330 回答
0

@Grant Thomas 和 @Paulie Waulie 是对的。问题是(可能)因为您在 dataGridView2 第 3 行的 [description] 中有一个撇号。它正在引发错误,您正在捕获它但没有看到它。尝试在你的 catch 块中放置一个消息框或断点,你会看到。

要修复您的查询,请尝试以下操作:

str = "use " + textBox4.Text + "; SELECT * FROM myTable 
where myRule=1 and myFlag=1 and [description]='" + 
Replace(dataGridView2.Rows[i].Cells[0].Value.ToString(),"'","''") + "'";
于 2013-07-19T12:25:45.900 回答