gpt4 book ai didi

c# - 从 SQL 查询返回参数

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

我正在尝试运行一个 sql 存储过程并从查询中返回一个值。我的语法抛出以下错误:

Cannot implicitly convert type 'System.Data.SqlClient.SqlParameter' to 'decimal'

这是我的语法,我应该改变什么才能让它正常运行?

public Decimal ReturnValueFromQuery(string connectionString, string sqlQuery, int blah, DateTime d1, DateTime d2)
{
string cs = System.Configuration.ConfigurationManager.AppSettings[connectionString].ToString();
try
{
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sqlQuery;
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@blah", SqlDbType.Int).Value = blah;
cmd.Parameters.Add("@startDate", SqlDbType.Date).Value = d1;
cmd.Parameters.Add("@endDate", SqlDbType.Date).Value = d2;
var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
conn.Open();
cmd.ExecuteNonQuery();
return returnParameter;
}
}
catch { }
}

最佳答案

你的方法说它会返回一个小数,写 return returnParameter 是不可能的,因为它不尊重你的方法的签名。

您应该将返回参数的 Value 属性转换为十进制值

return Convert.ToDecimal(returnParameter.Value);

但是我对您选择将参数与 ParameterDirection.ReturnValue 一起使用感到有些困惑。正如您正确编写的 (SqlDbType.Int),这些参数只能返回整数而不是小数。或许,您应该考虑使用 ParameterDirection.Output 的参数并将其传递到存储过程的调用列表中

当然,如果你真的有一个整数,那么也可以将你的方法返回值更改为一个 int。
最后我强烈建议删除任何空的 catch block 。当您遇到异常时,这些 block 是致命的,因为您对此一无所知。

关于c# - 从 SQL 查询返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661841/

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