kellycx Ответов: 4

Невозможно вставить значение NULL в столбец 'Title', таблица


У меня есть ListView, и я пытался отредактировать комментарии, сделанные пользователями, после чего он будет обновлен в моей базе данных. Однако я сталкиваюсь с этой ошибкой, когда нажимаю кнопку Обновить в своем listView. Где я ошибся?

сообщение об ошибке:
Cannot insert the value NULL into column 'Title', table. 
Column does not allow nulls. UPDATE fails.
The statement has been terminated.


Ошибка Источника:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Мой код. cs:
MembershipUser currentUser = Membership.GetUser();
        Guid currentUserId = (Guid)currentUser.ProviderUserKey;
        int i = e.ItemIndex;
        TextBox tb = ListView1.Items[i].FindControl("commentContentTextBox") as TextBox;
        string test = tb.Text;
        int CommentID = Convert.ToInt16(ListView1.DataKeys[i].Value);

        string connectionString = ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString"].ConnectionString;
        SqlConnection myConnect = new SqlConnection(connectionString);

        string updateSQL = "UPDATE GenBook set Title=@Title, comment=@comment, package=@package, UserId=@UserId WHERE GenBookID = @GenBookID ";

        using (SqlConnection myConnection = new SqlConnection(connectionString))
        {
            myConnection.Open();

            SqlCommand myCommand = new SqlCommand(updateSQL, myConnection);
            myCommand.Parameters.AddWithValue("@GenBookID", GenBookID);
            myCommand.Parameters.AddWithValue("@Title", TextBox1.Text.Trim());
            myCommand.Parameters.AddWithValue("@comment", TextBox2.Text.Trim());
            myCommand.Parameters.AddWithValue("@UserId", currentUserId);
            myCommand.Parameters.AddWithValue("@package", package.Text.Trim());

            myCommand.ExecuteNonQuery();
            myConnection.Close();
            ListView1.EditIndex = -1;
            ListView1.DataBind();
}

Kenneth Haugland

Есть ли у вас allow null в SQL server?

kellycx

Нет, только мой пакет может быть нулевым. Остальные я запрещаю им быть нулевыми.

[no name]

Делает текстовое поле textbox1 на самом деле содержит значение?

kellycx

Для редактирования комментариев я ограничиваю пользователя только редактированием собственного содержимого комментариев. Что касается названия, то они не имеют права вносить изменения.

[no name]

Я не думаю, что вы понимаете. Когда вы отлаживаете свой код, проходя через него с помощью отладчика, когда вы получаете ошибку, имеет ли Textbox1 значение? Мне кажется, что именно там вы должны искать, так как именно оттуда исходит ошибка.

kellycx

Извините, что не понял. Теперь я понимаю, что ты имеешь в виду. Я отладил свои коды, и TextBox1 на самом деле имеет значение. Они способны фиксировать значение в текстовом поле 1.

4 Ответов

Рейтинг:
2

Santhosh Kumar Jayaraman

В вашем текстовом поле 1 нет никакого текста. Он пустой.

Убедитесь, что это обязательное поле. Еще в таблице, установить свойство столбца, чтобы разрешить значения null.


kellycx

Но само текстовое поле 1 уже имеет значение. Как я проверил в верхней части, прежде чем они опубликуют свой комментарий, заголовок и содержание комментариев должны иметь некоторый текст. Поэтому, даже если им не разрешено редактировать заголовок после того, как они разместили свой комментарий, текстовое поле 1 все равно будет содержать исходный текст, который они ввели заранее. Не так ли?

Рейтинг:
2

Kenneth Haugland

Думаю, вы получили всю необходимую информацию. Вы должны пройти через отладчик, см., например, эту статью: 10 + мощных отладочных трюков с Visual Studio[^] или вот этот http://msdn.microsoft.com/en-us/library/aa290350%28v=VS.71%29.aspx[^]

Либо как все говорили:
TextBox1 пуст, как вы, вероятно, выяснили бы с помощью отладчика.
И у вас есть либо зоб, чтобы изменить свой код, чтобы включить проверку на это, либо
Разрешить значения NULL в базе данных SQL


kellycx

У меня есть новая ошибка, которая гласит

Невозможно вставить значение NULL в столбец 'UserId', таблица

Тип данных, имя пользователя-это тип данных uniqueidentifier. Он зашифрован, и поэтому я действительно не знаю, как не сделать его не нулевым.

Kenneth Haugland

Если вы замените эту строку:
моя команда.Параметры.AddWithValue ("@Title", TextBox1. Text. Trim());
с этим:
моя команда.Параметры.AddWithValue ("@Title", " MyHeader");
Значит, это работает?

kellycx

Мне удалось списать свою предыдущую ошибку, но теперь появляется новая ошибка, которая говорит:
Невозможно вставить значение NULL в столбец 'UserId', таблица

Matt T Heffron

Вы это проверили
Идентификатор currentUserId = (идентификатор GUID)текущего пользователя.Проведения мероприятия;
действительно ли он установил ненулевое значение в currentUserId?

kellycx

Как же мне это сделать?

Matt T Heffron

Основные Приемы Отладки!
Установите там точку останова и посмотрите на ее значение.

Рейтинг:
2

Member 13045840

protected void btnlogin_Click(object sender, EventArgs e)
   {
       erroruserpage.Text = "";

       cn.ConnectionString = ConfigurationManager.ConnectionStrings["bs"].ToString();
       cn.Open();

       SqlCommand cmtest = new SqlCommand("insert into enquiryform (EmailAddr,last_login_time)values(@EmailAddr,@last_login_time)", cn);
       cmtest.Parameters.AddWithValue("@EmailAddr", txtusername.Text);
       cmtest.Parameters.AddWithValue("@last_login_time", DateTime.Today.ToString());

                cmtest.ExecuteNonQuery();
        cn.Close();

       SqlCommand cmtest1 = new SqlCommand("insert into tbl_admincreation_bs(tur_emailid,last_login_time)values(@emailid,@time)",cn);
       cmtest1.Parameters.AddWithValue("@emailid", txtusername.Text);
       cmtest1.Parameters.AddWithValue("@last_login_time", DateTime.Today.ToString());
       cmtest1.ExecuteNonQuery();
       cn.Close();


       cmd1.ExecuteNonQuery();


Member 13045840

ошибка в cmtest.Exeutenonquery
Невозможно вставить значение NULL в столбец 'contactno', таблицу 'projectname.dbo.table'; столбец не допускает значений null. Вставить не удается. как очистить ошибку в asp.net

Patrice T

Откройте новый вопрос с вашей проблемой.
Вы никогда не попадете сюда, потому что это ответ на другой вопрос.

Рейтинг:
1

Sandeep Mewara

Cannot insert the value NULL into column 'Title', table.
Column does not allow nulls. UPDATE fails.

Это само собой понятно. Вы пытаетесь вставить NULL в столбец, который настроен так, чтобы не разрешать значения null.

Либо установите значение по умолчанию, либо установите столбец, чтобы разрешить нулевое значение.