c# - MySQL 查询和 C# 中的多重串联

标签 c# mysql asp.net drop-down-menu group-concat

嘿,大家对 C# 还很陌生,我很迷茫。

我有两个下拉列表ddlcountry(国家)和DdPetPist(货币),国家/地区选择将使用所选国家/地区可用的货币填充货币列表。

代码如下

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                MySqlCommand cd2 = new MySqlCommand("SELECT DISTINCT(Country) FROM Animals", cs); 
                cs.Open();
                MySqlDataReader ddlCountry = cd2.ExecuteReader();
                ddlcountry.DataSource = ddlCountry;
                ddlcountry.DataValueField = "Country";
                ddlcountry.DataTextField = "Country";
                ddlcountry.DataBind();
                cs.Close();
                cs.Dispose();
            }
        }

protected void ddlcountry_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlcountry.Text != string.Empty)
            {
                MySqlCommand cd = new MySqlCommand(string.Format("SELECT * FROM Animals WHERE Country ='{0}'", ddlcountry.Text), cs);
                cs.Open();
                MySqlDataReader ddlSpecie = cd.ExecuteReader();
                DdPetPist.DataSource = ddlSpecie;
                DdPetPist.DataValueField = "Specie";
                DdPetPist.DataTextField = "Specie";
                DdPetPist.DataBind();
                cs.Close();
                cs.Dispose();
            }
        }  

这工作得很好,我对此很满意,尽管我正在保护它免受 SQL 注入(inject)。

问题

我知道尝试将信息打印到带有两个查询的两个标签中,但我遇到了问题。到目前为止,我的标签将打印出宠物价格和库存量等信息。但我似乎无法让查询根据不同的国家/地区选择进行调整。 我已经从事此工作几天了,任何帮助都会很棒,因为我对 C# 很陌生并且仍在学习中。

标签代码和查询(不随不同国家选择而改变)

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selection_price = DdPetPist.SelectedValue;
            string selection_stock = DdPetPist.SelectedValue;
            string petPrice = string.Empty;
            string available = string.Empty;

            MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_price), cs);
            MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_stock), cs);

            cs.Open();
            petPrice = Convert.ToString(cd_price.ExecuteScalar());
            available = Convert.ToString(cd_available.ExecuteScalar());
            cs.Close();

            PetPrice.Text = String.Format("Minimum Donation For A {0}  Is £{1}.", selection_price, petPrice);
            Availble.Text = String.Format("{0}'s Avalible {1} In Your Country.", selection_stock, available);
        } 

最佳答案

不要将单引号放在selection_price值上。 仅 varchar(String) 类型需要单引号

替换此:

MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM {0}_Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_price), cs);

这样:

  MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM {0}_Animals WHERE Specie ={1}", ddlcountry.Text, selection_price), cs);

解决方案 2: 您需要使用 ComboBoxSelectedItem 属性。

替换这 2 个查询:

MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_price), cs);
MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM Animals WHERE Specie ='{1}'", ddlcountry.Text, selection_stock), cs);

有以下 2 个查询:

MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Specie_Price FROM Animals WHERE Specie ='{1}' and Country ='{0}'", ddlcountry.SelectedItem.ToString().Trim(), selection_price), cs);
MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM Animals WHERE Specie ='{1}' and Country ='{0}'", ddlcountry..SelectedItem.ToString().Trim(), selection_stock), cs);

关于c# - MySQL 查询和 C# 中的多重串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20206011/

相关文章:

mysql - SQL查询的解释

asp.net - jQuery 限制 <script> 的范围

c# - 使用 asp.net web 表单 C# 在运行时获取图像高度

c# - Unity Score不增加

c# - string.format 序列能否以任意顺序出现

c# - 我可以在 C# 中创建一个全局异常处理程序,让代码在之后继续运行吗?

c# - .NET 核心与 MySQL

php - 选择(过滤)匹配一天、开始和结束过滤列表的记录

c# - WCF,从服务访问 Windows 窗体控件

javascript - 如何使用 asp.net 从数据库检索数据,然后将该数据输入 javascript 数组?