更正连接查询。 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 个标签的索引更改,其中选择了 Price
和 Specie
。
问题是标签没有显示所选国家/地区的正确打印,我知道它的查询,但我尝试了几种变体,似乎无法使其正常工作,非常感谢建议或帮助。
下面有查询的代码
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 返回查询结果时某些字段显示System.Byte[]的问题