如果textBox为空,则为默认参数

时间:2013-08-11 13:36:14

标签: c# winforms parameters sql-server-2008-r2

我有这个过滤表。

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");
                    }
                }
            }

例如,我在textBox1中有4001,在texBox2中有4017。我向我提供了400140024003的结果。 。 。 4017

问题是例如textBox1中的4001,而textBox2中没有,它没有结果。如何从4001获得结果直到表的最后一个值?如果textBox1为空且textBox2为4017,假设1的值最小,结果将为1,2,3到4017?

2 个答案:

答案 0 :(得分: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);

这样做,你总是会有一个值来比较。

答案 1 :(得分: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");                    
}