用于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();
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注入的信息