Antwi Ответов: 1

Системы.исключение NullReferenceException' произошла in...exe


Когда я пытаюсь сохранить информацию в базе данных без изображения, я получаю эту ошибку: System.NullReferenceException ' произошло в ... exe

это мои коды:

Dim bytes() As Byte = ms.ToArray
            Dim UploadImage As Bitmap = PictureBox.BackgroundImage
            Dim stream As New MemoryStream()
            PictureBox.BackgroundImage.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg)
            Dim picture() As Byte = stream.GetBuffer()
            stream.Close()


            Dim ds As DataSet = New DataSet()
            Dim str As String
            str = "insert into Staff_Information(EmpID,Fname,Oname,Lname,Date_hired,Branch,Department,Grade,Pictures) values (@EmpID,@Fname,@Oname,@Lname,@Date_hired,@Branch,@Department,@Grade,@Pictures)"
            cmd = New SqlCommand(str, con)

            con.Open()
            cmd.Parameters.AddWithValue("@EmpID", txtempID.Text)
            cmd.Parameters.AddWithValue("@Fname", txtfname.Text)
            cmd.Parameters.AddWithValue("@Oname", txtothername.Text)
            cmd.Parameters.AddWithValue("@Lname", txtlname.Text)
            cmd.Parameters.AddWithValue("@Date_hired", dtpempl.Value)
            cmd.Parameters.AddWithValue("@Branch", txtbranch.Text)
            cmd.Parameters.AddWithValue("@Department", txtdepartment.Text)
            cmd.Parameters.AddWithValue("@Grade", txtgrade.Text)
            cmd.Parameters.AddWithValue("@Pictures", picture)

            cmd.ExecuteNonQuery()
            MsgBox("Successful Saved")
            con.Close()
            cmd.Dispose()


Что я уже пробовал:

Пытался

Попробуй

Поймать ex как исключение

- Конец Попытки

Вариант но ничего не происходит
Пожалуйста мне нужна помощь

Kornfeld Eliyahu Peter

Идите и используйте свой отладчик, чтобы выяснить линию и причину...

F-ES Sitecore

Этот вопрос задают каждый день. Пожалуйста, научитесь искать ваше сообщение об ошибке и научитесь использовать отладчик, чтобы увидеть, что делает код, а не то, что вы думаете.

Richard MacCutchan


cmd.ExecuteNonQuery()
MsgBox("Successful Saved")

Не делай этого. Вы не имеете ни малейшего представления о том, ExecuteNonQuery() получилось или нет, потому что, как и многие так называемые разработчики,вы не удосужились проверить статус возврата. Вам нужно проверить все в вашем коде, не предполагайте, что он делает то, что вы думаете.

Richard Deeming

Чтобы быть справедливым, если INSERT терпит неудачу, ExecuteNonQuery будет выброшено исключение. Если он завершается без создания исключения, то, вероятно, можно с уверенностью предположить, что вставка удалась.

Если бы это был Ан UPDATE или DELETE, то это было бы необходимо будет проверить возвращаемое значение. :)

Richard MacCutchan

Вы все равно должны проверить возвращаемое значение.

Karthik_Mahalingam

какая линия

1 Ответов

Рейтинг:
1

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: вы пытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, в котором вы держите ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень забавный вид, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего такого, что обычно делали бы, когда извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете - и Visual Studio поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, VS покажет вам строку, на которой она обнаружила проблему. Затем вы можете начать просматривать различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы выяснить, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать!