0

你好朋友我有 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();
4

4 回答 4

1
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();
于 2013-07-19T15:12:00.563 回答
1

改变这个

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

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

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

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

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

于 2013-07-19T15:13:18.057 回答
1

您需要使用 Pivots 将这些列值更改为行。这是使用 Pivot 子句的教程。或者您可以使用 union,因为它只有 3 列。但我建议使用枢轴。

例子:

  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"]);
于 2013-07-19T15:07:38.623 回答
1

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

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 注入。

于 2013-07-19T15:08:05.870 回答