c# - 为什么这个 SQL 输出参数不能很好地发挥作用?

标签 c# sql output-parameter

我有以下代码。当我使用断点时,我可以看到 ["@myID"].Value 是一个真实值,例如 2467。但是,我无法将其转换为 tryParse 的字符串。我试过像下面这样使用“as string”,我也试过 toString()。我的 stringID 保持为空,因此 tryParse 将 myID 值保留为零。我确定这是一个微不足道的语法问题,但我很难过。我需要返回一个真实的ID比如2467等。

public static int myMethod(string name)
{
    Database myDB = DatabaseFactory.CreateDatabase("myDatabase");
    DbCommand myCommand = myDB.GetStoredProcCommand("myStoredProc");

    myDB.AddInParameter(myCommand, "@Name", DbType.String, name);
    myDB.AddOutParameter(myCommand, "@myID", DbType.Int32, 4);

    int myID = 0;

    int test = myDB.ExecuteNonQuery(myCommand);
    string stringID = myCommand.Parameters["@myID"].Value as string;
    bool canParse = int.TryParse(stringID, out myID);
    return myID;
}

最佳答案

我的猜测是类型转换失败了。您将 OUT 参数声明为 INT,您也应该尝试将其作为 int 读回:

int stringID =(int) myCommand.Parameters["@myID"].Value ;

而且我认为您不需要在下一行再次尝试解析它。 myCommand.Parameters["@myID"].Value 应该已经包含该值。

关于c# - 为什么这个 SQL 输出参数不能很好地发挥作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897491/

相关文章:

SQL:在三级树中保留 root_id?

php - 从 MYSQL 数据透视表中筛选记录

sql - 从存储过程输出最后插入的主键值

sql-server - 存储过程中 varchar 输出参数的用途是什么 - 不能 'return @myvarchar' 但可以 'select @myvarchar'

c# - 将人分成每组最具多样性的组的算法

c# - 在检查取消时让后台工作人员进入休眠状态

c# - 在 Android 上离线运行 Web 应用程序

javascript - Response.Redirect 在 JsonResult 中

mysql - 如何使用mysql调用带有输入和输出参数的Entity Framework Core中的存储过程

php - Select item in join table 每个链接需要满足多组条件