Я пытаюсь получить целочисленное значение из одной таблицы на основе имени пользователя поля строки. Я пробовал его с помощью хранимой процедуры и прямого текста. Когда я исполняю хранимую процедуру, я получаю правильное возвращаемое значение; однако надлежащий результат не проходит.Получение единственного значения из запроса
Вот оба набора кода - Прямой текст -
public int GetUserRole(string CUSER)
{
try
{
SQLCON = new SqlConnection(connectionString);
SQLCON.Open();
SQLCommand = new SqlCommand();
SQLCommand.CommandType = CommandType.Text;
SQLCommand.Parameters.Add("USUsername", SqlDbType.VarChar).Value = CUSER;
SQLCommand.CommandText = "SELECT USRole FROM tblUser WHERE USUsername = CUSER";
Int32 USRole = (Int32) SQLCommand.ExecuteScalar();
return USRole;
}
catch
{
HttpContext.Current.Response.Redirect("~/ErrorRedirect.aspx", false);
return 0;
}
}
SQL-запрос:
ALTER PROCEDURE [dbo].[spGetUserRole]
-- Add the parameters for the stored procedure here
@username VARCHAR(50)
AS
BEGIN
-- Declare the return variable here
DECLARE @USRole as int
-- Add the T-SQL statements to compute the return value here
SELECT @USRole = tblUser.USRole FROM tblUser WHERE USUsername = @username
-- Return the result of the function
RETURN @USRole
END
Int32 USRole = (Int32) SQLCommand.ExecuteScalar(); Если есть нулевые записи, которые будут взорваны на этой строке, вместо того, чтобы обрабатывать ошибку, вы поглощаете свой улов с помощью общего catch all Exception и return 0 –