【发布时间】:2013-02-05 03:01:28
【问题描述】:
我需要这方面的帮助;看起来很简单,但我就是想不通。
我的代码:
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上;它按照应有的方式从 UI 向下传递值,但 datareader 仍然为空...
我检查了我的 SQL;它执行正常。
我已经两次和三次检查以确保代码中调用的存储过程名称与数据库中的过程匹配,并且代码中的参数名称与过程中的参数名称匹配......
程序...
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
【问题讨论】:
标签: c# asp.net stored-procedures ado.net