0

我有这个来过滤表格。

using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
            {
                myDatabaseConnection.Open();
                using (SqlCommand mySqlCommand = new SqlCommand("Select * from Employee WHERE EmpID >= @from  AND EmpID <= @to", myDatabaseConnection))
                {
                    mySqlCommand.CommandType = CommandType.Text;
                    mySqlCommand.Parameters.AddWithValue("@from", textBox1.Text);
                    mySqlCommand.Parameters.AddWithValue("@to", textBox2.Text);
                    {
                        ds = new DataSet();
                        adapter = new SqlDataAdapter(mySqlCommand);
                        adapter.Fill(ds, "Employee");
                    }
                }
            }

例如,我4001在 textBox1 和4017texBox2 中有。我给了我4001, 4002,的结果4003。. .4017

问题是例如 I4001在 textBox1 和 none 在 textBox2 它没有给出任何结果。我将如何做才能得到从4001直到表的最后一个值的结果?如果 textBox1 为空而 textBox2 为4017,则假设 1 的值最小,结果将是 1,2,3 到 4017?

4

2 回答 2

0

最简单的方法是将 @from 和 @to 的值默认为空文本框的最小值和最大值

例如。如果 EmpId 是整数

int minId = 0;
int maxId = 99999;

if (!string.IsNullOrEmpty(textBox1.text))
minId = int.Parse(textBox1.text);

if (!string.IsNullOrEmpty(textBox2.text))
maxId = int.Parse(textBox2.text);

mySqlCommand.Parameters.AddWithValue("@from", minId);
mySqlCommand.Parameters.AddWithValue("@to", maxId);

这样做,您将始终具有可比较的价值。

于 2013-08-11T14:16:05.453 回答
0

根据您的要求,这应该有效:

using (SqlCommand mySqlCommand = new SqlCommand {Connection = myDatabaseConnection})
{
    mySqlCommand.CommandText = "Select * from Employee WHERE " + 
    textBox2.Text.Trim() == "" ? "EmpID >= @from" : "EmpID >= @from  AND EmpID <= @to";
    mySqlCommand.CommandType = CommandType.Text;
    mySqlCommand.Parameters.AddWithValue("@from", textBox1.Text.Trim() != "" ? textBox1.Text : int.Parse(textBox2.Text.Trim()) - 3);
    if(textBox2.Text.Trim() != "")
        mySqlCommand.Parameters.AddWithValue("@to", textBox2.Text);

    ds = new DataSet();
    adapter = new SqlDataAdapter(mySqlCommand);
    adapter.Fill(ds, "Employee");                    
}
于 2013-08-11T16:40:09.943 回答