gpt4 book ai didi

c# - 存储过程中的转换异常

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:50 24 4
gpt4 key购买 nike

我正在处理 C# 中的存储过程并制作一个像这样的新存储过程

CREATE PROCEDURE [dbo].[stored_proc]
@param1 int,
@param2 varchar
AS
UPDATE medicine
SET medicine_name='" + param2 + "'
WHERE medicine_id = '" + param1 + "'
RETURN 0

我在我的代码中这样调用这个存储过程

if (selectedRow_update.Cells["ID"].Value != null)
{
SqlCommand sto_proc =new SqlCommand("stored_proc",obj.con);
sto_proc.CommandType = CommandType.StoredProcedure;
sto_proc.Parameters.Add("@param1", SqlDbType.Int).Value = Convert.ToInt32(selectedRow_update.Cells["ID"].Value);
sto_proc.Parameters.Add("@param2", SqlDbType.VarChar).Value = selectedRow_update.Cells["Medicine Name"].Value.ToString();
sto_proc.ExecuteNonQuery();
}

我收到一个异常,将 varchar 值 '"+ param1 + "' 转换为数据类型 int 时转换失败

因为我已将 param1 声明为 int 并在转换后传递一个也是 int 的值,因为我是从 datagridview 获取此值排。那么为什么会出现转换问题。

最佳答案

您正在将 medicine_id 设置为字符串文字 "+ param1 + "。你想要做的是:

UPDATE medicine
SET medicine_name = @param2
WHERE medicine_id = @param1

还有一些quick reading关于使用参数。那里有很多;阅读 SQL 以了解基础知识。

关于c# - 存储过程中的转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21941809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com