用于Ior的SqlCommand从多列向ComboBox填充值

本文关键字:ComboBox 填充 Ior SqlCommand 用于 | 更新日期: 2023-09-27 18:23:53

朋友们好,我有列cena1、cena2、cena3,我需要在组合框中显示它的值,有什么方法可以做到吗?我试过这个:

 spojeni.Open();
 var cb4 = new SqlCommand("SELECT cena1,cena2,cena3 FROM zajezd WHERE akce="+zakce.Text,spojeni);
            SqlDataReader dr4 = cb4.ExecuteReader();
            while (dr4.Read())
            {
                comboBox4.Items.Add(dr4["cena1,cena2,cena3"]);

            }
            dr4.Close();
            dr4.Dispose();

但是程序失败了。你能帮帮我吗?

            spojeni.Close();

用于Ior的SqlCommand从多列向ComboBox填充值

spojeni.Open();
var cb4 = new SqlCommand("SELECT cena1,cena2,cena3 FROM zajezd WHERE akce="+zakce.Text,spojeni);
        SqlDataReader dr4 = cb4.ExecuteReader();
        while (dr4.Read())
        {
            comboBox4.Items.Add(dr4["cena1"].ToString() + dr4["cena2"].ToString() + dr4["cena3"].ToString());

        }
        dr4.Close();
        dr4.Dispose();

您需要使用数据透视将这些列值更改为行。下面是使用Pivot子句的教程。或者您可以使用并集,因为它只有3列。但我建议使用pivot。

示例:

  select cena 
  from (
  select akce, cena1 cena from zajezd
  union all
  select akce, cena2 cena  from zajezd
  union all
  select akce, cena3 cena  from zajezd
  ) t
  where
     t.akce = 

在C#中,您可以将列名指定为cena

示例:

  comboBox4.Items.Add(dr4["cena"]);

这不是检索列值的有效方法

dr4["cena1,cena2,cena3"]

像一样使用它的正确方法

string val1 = Convert.ToString(dr4["cena1"]);
string val2 = Convert.ToString(dr["cena2"]);
string val3 = Convert.ToString(dr["cena3"]);
comboBox4.Items.Add(val1+" " +val2+" " +val3);

您还应该使用参数化查询来避免sql注入。

更改此

comboBox4.Items.Add(dr4["cena1,cena2,cena3"]);

comboBox4.Items.Add(dr4["cena1"]);
comboBox4.Items.Add(dr4["cena2"]);
comboBox4.Items.Add(dr4["cena3"]);

您的代码易受Sqlinjection攻击。尽管您可能会考虑阅读本文以获取有关Sql注入的信息