Первое случайное исключение типа "System.InvalidCastException" произошло в Microsoft.VisualBasic.dll в vb.NET

Я новичок в Visual Studio, а также SQL Server. Я запутался в том, как вставить данные из приложения Visual Studio

Я получил ошибку System.InvalidCastException. Я не понимаю, в чем проблема.

Это мой код:

PatientInfoConnection.Open() 'open database connection

Dim sql As String = ""
sql = "insert into model (name, age, date_of_confinement, type_of_sickness, type_of_IVfluid, number_of_bottles, drop_rate)" & _
                   " values (@name, @age, @date_of_confinement, @type_of_sickness, @type_of_IV_fluid, @number_of_bottles, @drop_rate)"

Dim insert As New SqlCommand(sql, PatientInfoConnection)

insert.Parameters.AddWithValue("@name", txtName.Text)
insert.Parameters.AddWithValue("@age", nudAge.Value.ToString())
insert.Parameters.AddWithValue("@date_of_confinement", dtpDate.Value.ToString())
insert.Parameters.AddWithValue("@type_of_sickness", txtSickness.Text)
insert.Parameters.AddWithValue("@type_of_IV_fluid", txtFluid.Text)
insert.Parameters.AddWithValue("@number_of_bottles", txtBottle.Text)
insert.Parameters.AddWithValue("@drop_rate", nudDrop.Value.ToString())

insert.ExecuteNonQuery()

Я думаю о том, что у меня проблема с ценностями. nudAge.Value - это число вверх-вниз, в моей базе данных sql это Age (int, null). У меня также есть dtpDate.Value. Выбор даты и времени. Я думаю, что я не должен использовать ToString() на нем, но я не знаю синтаксис..

Может кто-нибудь мне помочь? Любая помощь будет оценена. Спасибо!

date_of_confinement - это datetime в моей базе данных. Разве формат должен быть таким? insert.Parameters.AddWithValue("@date_of_confinement", dtpDate.Value.ToShortDateString)

Кроме того, я вставил.Parameters.AddWithValue("@number_of_bottles", Int32.Parse(txtBottle.Text))

но я все еще получил ошибку. Я не совсем понимаю. Спасибо за вашу помощь!

это то, что я сделал сейчас... insert.Parameters.AddWithValue("@date_of_confinement", Date.Parse(dtpDate.Value))

Я также внес изменения, такие как:

   insert.Parameters.AddWithValue("@age", Convert.ToInt32(txtAge.Text))        
   insert.Parameters.AddWithValue("@number_of_bottles", Convert.ToInt32(txtBottle.Text)) 
   insert.Parameters.AddWithValue("@drop_rate", Convert.ToInt32(txtDrop.Text)) 

У меня больше нет ошибки, но когда я нажимаю сохранить, он ничего не делает, даже закрывает форму и открывает другую форму. Ничего не делал

Спасибо за вашу помощь! пп

1 ответ

Если date_of_confinement это дата и время в БД, вы должны передать его как Date к SqlParameter. Просто удалите ToString, То же самое верно для NumericUpDown ценности.

insert.Parameters.AddWithValue("@name", txtName.Text)
insert.Parameters.AddWithValue("@age", nudAge.Value)
insert.Parameters.AddWithValue("@date_of_confinement", dtpDate.Value)
insert.Parameters.AddWithValue("@type_of_sickness", txtSickness.Text)
insert.Parameters.AddWithValue("@type_of_IV_fluid", txtFluid.Text)
insert.Parameters.AddWithValue("@number_of_bottles", Int32.Parse(txtBottle.Text))
insert.Parameters.AddWithValue("@drop_rate", nudDrop.Value)

Обратите внимание, что я также проанализировал txtBottle.Text целое число, так как я предположил, что number_of_bottles является int столбец в дБ.

Другие вопросы по тегам