Первое случайное исключение типа "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
столбец в дБ.