0
與輸出參數執行MySQL的存儲過程我有這個存儲過程與輸出參數不能在asp.net
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `usp_count_rows`(OUT total int)
BEGIN
SELECT COUNT(*)
FROM address_book.persons;
END
我想在asp.net頁面中使用它。我寫這背後代碼:
string commandText = "usp_count_rows";
MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["mySqlString"].ConnectionString);
MySqlCommand cmd = null;
try
{
cmd = new MySqlCommand(commandText, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("total", MySqlDbType.Int32);
cmd.Parameters["total"].Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
int total = (int)cmd.Parameters["?total"].Value;
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Clone();
}
和我得到這個錯誤信息
指定的轉換是無效的。
FOT線
INT總=(int)的cmd.Parameters [ 「總?」]值。
我該怎麼做才能使代碼正常工作。另一件事我不想在aspx頁面中使用結果。像這樣:總行數:(來自存儲過程的結果)。你有什麼建議嗎?
我試過了,但我又得到了:「指定的轉換無效」。 – PUDEV
如果你自己在代碼之外運行它,你能驗證查詢/ sp的結果嗎? –
此外,只是一個想法,但可能直接從ExecuteScalar的結果轉換爲int是不可能的,請嘗試'int total = Convert.ToInt32(cmd.ExecuteScalar());'而不是。我用這一行更新了我的答案 –