InvalidCastException - не удалось преобразовать значение параметра из sqlparameter в строку

0

Я новичок в блоке приложений.

Я пытаюсь вставить данные в базу данных. Ниже приведен код.

 private int Id;
    private string Title;
    private string Description;
    private DateTime Start;
    private DateTime End;
    private int User_id;


    public int id
    {
        get
        {
            return Id;
        }
        set
        {
            Id = value;
        }
    }
    public string title
    {
        get
        {
            return Title;
        }
        set
        {
            Title = value;
        }
    }
    public string description
    {
        get
        {
            return Description;
        }
        set
        {
            Description = value;
        }
    }
    public DateTime start
    {
        get
        {
            return Start;
        }
        set
        {
            Start = value;
        }
    }
    public DateTime end
    {
        get
        {
            return End;
        }
        set
        {
            End = value;
        }
    }
    public int user_id
    {
        get
        {
            return User_id;
        }
        set
        {
            User_id = value;
        }
    }

ЦАП:

  public static int addEvent(CalendarEvent cevent)
    {
        try
        {


            SqlParameter[] sqlParam = new SqlParameter[5];
            sqlParam[0] = new SqlParameter("@title", cevent.title);
            sqlParam[0].Direction = ParameterDirection.Input;

            sqlParam[1] = new SqlParameter("@description", cevent.description);
            sqlParam[1].Direction = ParameterDirection.Input;

            sqlParam[2] = new SqlParameter("@event_start", Convert.ToString(cevent.start));
            sqlParam[2].Direction = ParameterDirection.Input;

            sqlParam[3] = new SqlParameter("@event_end", Convert.ToString(cevent.end));
            sqlParam[3].Direction = ParameterDirection.Input;

            sqlParam[4] = new SqlParameter("@user_id", cevent.user_id);
            sqlParam[4].Direction = ParameterDirection.Input;

            return Convert.ToInt32(SqlHelper.ExecuteScalar(connectionString, "SaveData", sqlParam));
        }
        catch
        {
            throw;
        }

Класс SQLHelper:

 public static object ExecuteScalar(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
        {
            //create a command and prepare it for execution
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters);

            //execute the command & return the results
            object retval = cmd.ExecuteScalar();

            // detach the SqlParameters from the command object, so they can be used again.
            cmd.Parameters.Clear();
            return retval;

        }

Я получаю ошибку в объекте retval = cmd.ExecuteScalar() Не удалось преобразовать значение параметра из SqlParameter в строку. Я не могу понять, в чем проблема.

  • 0
    я не знаю правильно
Теги:
sql-server-2008

1 ответ

1

Ваша сигнатура функции для метода SQLHelper.ExecuteScalar

ExecuteScalar(SqlConnection, CommandType, string, params SqlParameter[])

И вы используете

SqlHelper.ExecuteScalar(connectionString, "SaveData", sqlParam)

Вы должны передать CommandType, вы не передаете CommandType в своем вызове функции

использование

SqlHelper.ExecuteScalar(connectionString, CommandType.StoredProcedure, "SaveData", sqlParam)

Pass CommandType согласно вашему требованию

Кроме того, я думаю, вам нужно передать SqlConnection, поэтому используйте

SqlHelper.ExecuteScalar(new SqlConnection(connectionString), CommandType.StoredProcedure, "SaveData", sqlParam)
  • 0
    Не работает, ошибка: неверный синтаксис рядом с SaveData
  • 0
    sry, работает ... большое спасибо .......

Ещё вопросы

Сообщество Overcoder
Наверх
Меню