更正连接查询。 C# 和 MySQL

Posted

技术标签:

【中文标题】更正连接查询。 C# 和 MySQL【英文标题】:correcting concatenation query. C# and MySQL 【发布时间】:2013-12-10 17:50:11 【问题描述】:

我的数据库中有一个包含 4 列的表 Specie | Price | Stock | Country。 和两个下拉列表,第一个是Country,一旦选择了国家,第二个下拉列表显示分配给国家的Specie。 这一切都很好。

我拥有的两个下拉列表是

    ddlcountry供用户选择国家

    DdPetPist是物种列表

问题

我选择了显示 2 个标签的索引更改,其中选择了 PriceSpecie。 问题是标签没有显示所选国家/地区的正确打印,我知道它的查询,但我尝试了几种变体,似乎无法使其正常工作,非常感谢建议或帮助。

下面有查询的代码

 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 Price FROM Animals WHERE Specie ='0'", 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);
     

【问题讨论】:

...WHERE Specie ='1'", ddlcountry.Text, selection_price... 你的意思是 "Where specie = selection_price" 吗?同样是第二个.. 我知道你要去哪里,但它不起作用 实际上这不是更改代码的建议 - 这是一个问题 - 你是否故意采用 second 参数 1 恰好是“selection_price”和在 WHERE 查询中使用它? 第一个 0 将输出 Specie,第二个 1 将输出所选 Specie 的价格。我已经更新了我的问题中的代码。 【参考方案1】:
MySqlCommand cd_price = new MySqlCommand(String.Format("SELECT Price FROM Animals WHERE Specie ='0'", ddlcountry.Text, selection_price), cs);
MySqlCommand cd_available = new MySqlCommand(String.Format("SELECT Stock FROM Animals WHERE Specie ='1'", ddlcountry.Text, selection_stock), cs);

当字符串中只有一个参数时,您可以为查询提供两个参数。您想将Specie 列与ddlcountry 值匹配...我认为您点击了错误的下拉列表。

你应该使用参数化查询:

MySqlCommand m = new MySqlCommand("SELECT Price FROM Animals WHERE Specie = @specie");
m.Parameters.AddWithValue("@specie", ddlcountry.Text);

Link to documentation

【讨论】:

剂量似乎不起作用,但我会继续努力..谢谢你 .... 我没有给你工作代码。我复制了你的错误代码并告诉你该怎么做:我不知道正确下拉列表的名称来获取货币值。然后,我向您展示了如何以良好的方式使用参数进行查询。您仍然需要在这段代码中更改ddlcountry.Text

以上是关于更正连接查询。 C# 和 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

C#访问MySQL:连接查询删除(查删)

C#访问MySQL:连接查询删除(查删)

C# 连接MYSQL 返回查询结果时某些字段显示System.Byte[]的问题

vs2017 c#窗口应用程序 datagridview查询到mysql数据,如何改变列字段的顺序

MySQL连接查询

在 C# 中使用组和连接进行 LINQ 查询