Проблема вставки данных в базу данных mySQL (более 200 символов) с помощью хранимой процедуры - PullRequest
1 голос
/ 05 апреля 2020

У меня есть небольшая форма гостевой книги в asp / c#, которая прекрасно работает, пока я не хочу добавить в сообщение более 200 (я думаю, более 255) символов.

форма и исключение

Исключение: данные слишком длинные для столбца '_entry_message' в строке 1

_entry_message - это параметр в моей хранимой процедуре. Тип данных в БД - длинный текст (я пробовал и другие).

Мой код в C#:

protected void btnSend_Click(object sender, EventArgs e)
    {
        try
        {
            using (MySqlConnection sqlCon = new MySqlConnection(myConnectionString))
            {
                sqlCon.Open();

                MySqlCommand sqlCmd = new MySqlCommand("AddEntry", sqlCon);

                sqlCmd.CommandType = CommandType.StoredProcedure;

                sqlCmd.Parameters.AddWithValue("_entry_date", DateTime.Today);
                sqlCmd.Parameters.AddWithValue("_name", txtName.Text.Trim());
                sqlCmd.Parameters.AddWithValue("_e_mail", txtEmail.Text.Trim());
                sqlCmd.Parameters.AddWithValue("_entry_message", txtMessage.Text.Trim());

                sqlCmd.ExecuteNonQuery();

                GridFill();

                Clear();

                lblMessage.Text = success;
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Visible = true;
            }
        }
        catch (Exception ex)
        {
            lblMessage.Text = error + ex.Message;
            lblMessage.ForeColor = System.Drawing.Color.Red;
            lblMessage.Visible = true;
        }
    }

Не думаю, что код - это проблема. Я предполагаю, что что-то происходит во время хранимой процедуры:

CREATE DEFINER=`albrecht`@`%` PROCEDURE `AddEntry`(_entry_date datetime,_name varchar(45),_e_mail varchar(45),_entry_message varchar(250)) BEGIN insert into tbl_guestbook(entry_date,name,e_mail,entry_message) values(_entry_date,_name,_e_mail,_entry_message); END

Извините за дерьмовое форматирование. Я не знаю, как это сделать здесь.

Большое спасибо за помощь, умные ребята. Если я забыл что-то упомянуть, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 05 апреля 2020

Тип данных для параметра _entry_message равен varchar(250). Если тип данных для столбца tbl_guestbook.entry_message равен longtext, тип данных для _entry_message должен соответствовать этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...