0

这是我使用 2 个过滤器 column1 和 column2 中的数据之间检查 Table1 上的数据的示例代码。我的代码正在运行,但只得到 1 个结果。举个例子。我在 textbox1 中输入“1”,在 textbox2 中输入“3”,在 textbox3 中输入“6”。Select * from TABLE1 where COLUMN1 = '1' AND COLUMN2 BETWEEN '3' AND '6' -- 在 sql 中运行时结果为 3、4、5、6,但在 C# 中我只得到“6”。你能帮我得到“3,4,5,6”的结果吗?谢谢你。

public partial class WebForm1 : System.Web.UI.Page
    {

    SqlConnection SC;
    SqlCommand CMD;
    SqlDataReader DR;

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        SC = new SqlConnection(ConfigurationManager.ConnectionStrings["BABBLER"].ConnectionString);
        SC.Open();
        CMD = new SqlCommand("Select * from TABLE1 WHERE COLUMN1= '" + TextBox1.Text + "' and  COLUMN2 Between '" + TextBox2.Text + "'" + " and " + "'" + TextBox3.Text + "'", SC);

        DR = CMD.ExecuteReader();

        if (DR.HasRows)
        {
            while (DR.Read())
            {
                label1.Text = DR["COLUMN2"].ToString();
            }

        }
    }
}

}

4

4 回答 4

1

您的循环不是附加值,而是覆盖 Label1。将您的 while 循环更改为

while (DR.Read())
{
   label1.Text += DR["COLUMN2"].ToString() + ",";
}

if (label1.Text.EndsWith(",")) label1.Text = label1.Text.SubString(0, label1.Text.Length-1) //Remove the last comma
于 2013-05-21T06:00:28.330 回答
1

改变

label1.Text = DR["COLUMN2"].ToString();

作为

label1.Text = label1.Text +", " + DR["COLUMN2"].ToString();
if (Label1.Text.Length > 2)
   Label1.Text = Label1.Text.Substring(2);
于 2013-05-21T05:57:24.703 回答
0

试试这个代码

SC = new SqlConnection(ConfigurationManager.ConnectionStrings["BABBLER"].ConnectionString);
SC.Open();
CMD = new SqlCommand("Select * from TABLE1 WHERE COLUMN1= '" + TextBox1.Text + "' and  COLUMN2 Between '" + TextBox2.Text + "'" + " and " + "'" + TextBox3.Text + "'", SC);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(CMD);
da.Fill(ds);

string data="";
for (int i = 0; i < ds.Tables[0].Rows.Count; i++ )
{

   if(data=="")
   {
      label1.Text = ds.Tables[0].Rows[i]["COLUMN2"].ToString();
   }
   else
   {
      label1.Text +=","+ ds.Tables[0].Rows[i]["COLUMN2"].ToString();
   }

}
于 2013-05-21T06:36:16.400 回答
0

有许多方法可以将结果组合成一个逗号分隔的列表。但是,使用字符串连接不应该是一个 -连接字符串很慢,尤其是在您可能有大量结果的情况下。请尝试以下方法之一:

使用StringBuilder

StringBuilder sb = new StringBuilder();
boolean doneFirstRow = false;
while (DR.READ())
{
    if (doneFirstRow) 
    {
        sb.Append(", ");
    }
    else 
    {
        doneFirstRow = true;
    }
    sb.Append(dr["COLUMN2"].ToString());
}
Label1.Text = sb.ToString();

使用带有String.Join的列表:

List<string> values = new List<string>();
while (DR.READ())
{
    values.Add(dr["COLUMN2"].ToString());
}
Label1.Text = String.Join(", ", values);

注意:如果不使用 NET4.5,您将需要String.Join(", ", values.ToArray())

于 2013-05-21T06:58:47.610 回答