我需要幫助;似乎很直接,但我無法弄清楚。參數未傳入SQL Server存儲過程
我的代碼:
public DataTable GetUserAssociatedModules(string UserEmail)
{
// retrieve module titles from Module table to be passed to ddlModules in Student.Master
try
{
SqlCommand getModules = new SqlCommand("GetUserAssociatedModules", con);
getModules.Parameters.AddWithValue("@userEmail", UserEmail);
SqlDataReader dr;
dr = getModules.ExecuteReader();
//DataTable dt = new DataTable();
dt.Columns.Add("moduleTitle");
dt.Load(dr);
return dt;
}
catch (Exception ex)
{
HttpContext.Current.Response.Write("Exception: " + ex.Message + ", CourseDAO.GetModules()");
return null;
}
finally
{
// close database connection
if (con != null)
{
con.Close();
}
}
}
我不斷收到一個例外:
過程或函數 'GetUserAssociatedModules' 需要參數 '@userEmail',但未提供。
我把一塊手錶放在UserEmail
;它的價值從用戶界面向下傳遞,因爲它應該但datareader保持空...
我檢查了我的SQL;它執行OK。
我有雙重和三重檢查,以確保調用代碼存儲過程的名稱的程序在數據庫中,並在代碼中的參數名稱相匹配的在程序匹配...
的過程.. 。
ALTER PROCEDURE [dbo].[GetUserAssociatedModules]
@userEmail nvarchar(MAX)
AS
BEGIN
SELECT
[dbo].[Module].[moduleId],[moduleTitle]
FROM
[dbo].[Module]
INNER JOIN
[dbo].[ModuleUser] ON [dbo].[Module].[moduleId] = [dbo].[ModuleUser].[moduleId]
WHERE
[dbo].[ModuleUser].[userId] = (SELECT [userId]
FROM [dbo].[User]
WHERE [eMail] = @userEmail)
ORDER BY
[moduleTitle] ASC
END
發佈您的SP! –