System.Data.SqlClient.SqlException: 'Преобразование не удалось при преобразовании значения varchar' gcobani 'в тип данных int.' - PullRequest
0 голосов
/ 24 января 2020

Я запускаю исключение, преобразование, похоже, завершается неудачно, когда я пытаюсь создать нового пользователя в базе данных. Это попадает в мой репозиторий по этому методу ниже, в то время как в моей процедуре магазина он возвращает целое число; Тогда возникает вопрос, как я могу решить эту проблему? Пожалуйста, советуйте и помогите мне исправить это лучше.

enter image description here

C# код:

public string GetUserName_By_UserID(string UserId)
{
    using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyString"].ToString())) 
    {
        var para = new DynamicParameters();
        para.Add("@UserId", UserId);

        return con.Query<string>("Usp_UserNamebyUserID", para, null, true, 0, CommandType.StoredProcedure).SingleOrDefault();
    }
}

Хранимая процедура:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Usp_UserNamebyUserID]  
    @UserId varchar(200)  
AS
BEGIN
    SELECT UserName 
    FROM Users 
    WHERE Id = @UserId  
END

NB: мой UserId, который я сейчас проверил по имени таблицы «Users», определил его как Int, возможно, в этом причина.

1 Ответ

1 голос
/ 24 января 2020

Просто попробуйте с нижеуказанным SP:

CREATE proc [dbo].[Usp_UserNamebyUserID]
@UserId int
as
begin
select UserName FROM Users where Id =@UserId
end 

Вы должны изменить свой c# код, например:

public string GetUserName_By_UserID(Int UserId)
        {
            using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyString"].ToString())) {

                var para = new DynamicParameters();
                para.Add("@UserId", UserId);
                return con.Query<string>("Usp_UserNamebyUserID", para, null, true, 0, CommandType.StoredProcedure).SingleOrDefault();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...