I get an error quot;Error converting data type nvarchar to real.quot;(我收到错误“将数据类型 nvarchar 转换为实数时出错.)
问题描述
我的代码如下,请告诉我问题出在哪里,以便我们可以按仓库 ID 降价 7%?
The code which I have is below, can you please inform me where the issue might be so we can drop the price by warehouse ID with 7%?
private void button4_Click(object sender, EventArgs e)
{
try
{
myConnection = new SqlConnection(frm.cs);
myCommand = new SqlCommand("update Inventory set Price=@Price where WarehouseCode=6", myConnection);
myConnection.Open();
myCommand.Parameters.AddWithValue("@Price", "@Price * 0.7");
myCommand.ExecuteNonQuery();
myConnection.Close();
MessageBox.Show("Update successfully!");
DisplayData();
if (myConnection.State == ConnectionState.Open)
{
myConnection.Dispose();
}
}
推荐答案
当你的 仓库 ID 和 折扣率 由最终用户指定,我建议您的代码如下:
As you are not assigning any value to @Price in the C# code while your Warehouse Id and the Discount rate are subject to be assigned by the end-user, I recommend your code be like this:
private void button4_Click(object sender, EventArgs e)
{
try
{
var discountRate = 0.07; //could be Convert.ToDouble(textBox1.Text) or something else
var warehouseId = 6; //again, could be Convert.ToInt32(textBox2.Text) or something else
myConnection = new SqlConnection(frm.cs);
myCommand = new SqlCommand("update Inventory set Price=Price*(1-@DiscountRate) " +
"where WarehouseCode=@WarehouseId", myConnection);
myConnection.Open();
myCommand.Parameters.AddWithValue("@DiscountRate", discountRate);
myCommand.Parameters.AddWithValue("@WarehouseId", warehouseId);
myCommand.ExecuteNonQuery();
myConnection.Close();
MessageBox.Show("Update successfully!");
DisplayData();
if (myConnection.State == ConnectionState.Open)
{
myConnection.Dispose();
}
}
catch
{
}
}
我还建议您重新考虑您的查询,因为它会使用相同的值更新所有产品价格,您可以考虑传递参数 @ProductId 并且您的查询是
I would also recommend you think again about your query as it will update all products price with the same value, you may consider passing parameter @ProductId and your query be
update Inventory set Price=Price*(1-@DiscountRate)
where WarehouseCode=@WarehouseId and ProductCode=@ProductId
当然是这样.
这篇关于我收到错误“将数据类型 nvarchar 转换为实数时出错."的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:我收到错误“将数据类型 nvarchar 转换为实数时出错."
基础教程推荐
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
