C# 用于将Ior值从多列填充到组合框的SqlCommand
朋友们好,我有cena1、cena2、cena3列,我需要在combobox中显示它的值,有什么方法可以做到这一点吗? 我试过这个:C# 用于将Ior值从多列填充到组合框的SqlCommand,c#,sql,sql-server,combobox,sqlcommand,C#,Sql,Sql Server,Combobox,Sqlcommand,朋友们好,我有cena1、cena2、cena3列,我需要在combobox中显示它的值,有什么方法可以做到这一点吗? 我试过这个: spojeni.Open(); var cb4 = new SqlCommand("SELECT cena1,cena2,cena3 FROM zajezd WHERE akce="+zakce.Text,spojeni); SqlDataReader dr4 = cb4.ExecuteReader(); wh
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();
您需要使用数据透视将这些列值更改为行。下面是一个to-use-Pivot子句。或者您可以使用union,因为它只有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 =
comboBox4.Items.Add(dr4["cena"]);
在C#中,您可以将列名指定为cena
例如:
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 =
comboBox4.Items.Add(dr4["cena"]);
您需要使用数据透视将这些列值更改为行。下面是一个to-use-Pivot子句。或者您可以使用union,因为它只有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 =
comboBox4.Items.Add(dr4["cena"]);
在C#中,您可以将列名指定为cena
例如:
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 =
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注入。这不是检索列值的有效方法
dr4["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"].ToString() + dr4["cena2"].ToString() + dr4["cena3"].ToString());
}
dr4.Close();
dr4.Dispose();
像这样使用它的正确方法
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注入。更改此选项
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();
comboBox4.Items.Add(dr4["cena1,cena2,cena3"]);
到
您的代码易受Sqlinjection攻击。虽然您可以考虑阅读关于SQL注入的信息更改这个
comboBox4.Items.Add(dr4["cena1,cena2,cena3"]);
到
您的代码易受Sqlinjection攻击。尽管您可以考虑阅读关于SQL注入< /p>的信息,但您有SQL注入漏洞。它是如何失败的?您有错误吗?您有SQL注入漏洞。它是如何失败的?你有错误吗?