C# 在ASP.NET C中查询和显示所有结果之间使用SQL

C# 在ASP.NET C中查询和显示所有结果之间使用SQL,c#,asp.net,sql,C#,Asp.net,Sql,这是我的示例代码,用于使用2个过滤器(第1列和第2列中的数据之间)检查表1上的数据。我的代码正在运行,但只得到一个结果。比如说。我在textbox1中输入1,在textbox2中输入3,在textbox3中输入6。从表1中选择*,其中COLUMN1='1',COLUMN2在'3'和'6'之间-当在sql中运行时,结果是3,4,5,6,但在C中我只得到6。你能帮我得到3,4,5,6吗。多谢各位 public partial class WebForm1 : System.Web.UI.Page

这是我的示例代码,用于使用2个过滤器(第1列和第2列中的数据之间)检查表1上的数据。我的代码正在运行,但只得到一个结果。比如说。我在textbox1中输入1,在textbox2中输入3,在textbox3中输入6。从表1中选择*,其中COLUMN1='1',COLUMN2在'3'和'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();
            }

        }
    }
}
}改变

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


循环不是附加值,而是覆盖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
试试这个代码

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

}

有许多方法可以将结果合并到逗号分隔的列表中。但是,使用字符串连接不应该是一-,特别是当您可能有大量结果时。请尝试以下操作之一:

使用

使用具有以下内容的列表:


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

请使用而不是像那样编写sql语句,否则您可能会被访问。非常感谢Arun。它现在显示3 4 5 6,但没有逗号。如何添加逗号?谢谢你。我想你需要在这个表达式周围加上括号。label1.Text+=DR[COLUMN2].ToString+,;我试过了,但仍然显示3 4 5 6作为输出。逗号到处都找不到。谢谢你的回答。真是松了一口气。我很惊讶。您可能需要在循环中放置断点进行调试,并在即时窗口中查看label1.Text。您能发布您的代码吗?谢谢,但此代码将显示不带逗号的数据,。结果是3,4,5,6应该是3,4,5,6你是个很棒的技术员。谢谢。应该避免在循环中串接字符串——这是事实。
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();
   }

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