亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調用存儲過程時出錯返回值錯誤數據類型 nvarchar(max) 為 int

調用存儲過程時出錯返回值錯誤數據類型 nvarchar(max) 為 int

C#
森林海 2023-07-22 18:35:40
我調用 astored procedure并且它有一個int返回值。但是,將值返回到我的后端時出現錯誤。public async Task<string> CreatePortfolio(Portfolio portfolio){    string statusMessage;    using (SqlConnection conn = new SqlConnection(Connection))    {        SqlParameter returnValue = new SqlParameter(); //Holds the bit that determines if insert was successful or not        SqlCommand command;        command = new SqlCommand();        command.Connection = conn;        conn.Open();        command.CommandType = CommandType.StoredProcedure;        command.CommandText = "USP_Add_Portfolio";        command.Parameters.AddWithValue("@portfolioName", portfolio.PortfolioName);        command.Parameters.AddWithValue("@description", portfolio.Description);        command.Parameters.AddWithValue("@createID", portfolio.CreateID);        command.Parameters.AddWithValue("@updateID", portfolio.UpdateID);        command.Parameters.AddWithValue("@statusMessage", SqlDbType.NVarChar).Direction = ParameterDirection.Output;        returnValue.Direction = ParameterDirection.ReturnValue;        command.Parameters.Add(returnValue);        int i = await command.ExecuteNonQueryAsync().ConfigureAwait(false);        if(i == 1)        {            statusMessage = command.Parameters["@statusMessage"].Value.ToString();        }        else        {            statusMessage = "Error while adding please contact your administrator";        }    }    return statusMessage;}存儲過程完成并添加新記錄,但出現錯誤int i = await command.ExecuteNonQueryAsync().ConfigureAwait(false);錯誤:期待一個 int 但得到 nvarchar
查看完整描述

2 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

ExecuteNonQuery(暫時不用擔心異步...)返回 UPDATE、INSERT、DELETE 影響的行數,否則返回 -1。它不直接從存儲過程返回信息。

在上面的例子中,我認為你應該在沒有“int i ="的情況下調用“await”,而不用擔心調用的返回值ExecuteNonQueryAsync。相反,在該值之后,查看 中的值returnValue.Value,這將是“return”參數的值。它是一個對象,因此請驗證類型或使用Convert.ToInt32().


查看完整回答
反對 回復 2023-07-22
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

這看起來不正確,因為SqlDbType.NVarChar是一個枚舉值:

command.Parameters.AddWithValue("@statusMessage", SqlDbType.NVarChar).Direction = ParameterDirection.Output;

如果你改用這個會發生什么:

command.Parameters.Add(new SqlParameter("@statusMessage", SqlDbType.NVarChar, -1)).Direction = ParameterDirection.Output;


查看完整回答
反對 回復 2023-07-22
  • 2 回答
  • 0 關注
  • 169 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號