Проблема при попытке вставить данные: ошибка при преобразовании типа данных nvarchar в числовой.
Dim cm As New SqlCommand cm.Connection = con cm.Connection.Open() cm.CommandText = "Insert into tblsim ([sn],[dir],[alt],[plans],[rate],[addon],[cm]) values (@sn,@dir,@alt,@plans,@rate,@addon,@cm)" If tssn.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@sn", SqlDataType.Numeric).Value = DBNull.Value Else cm.Parameters.AddWithValue("@sn", SqlDataType.Numeric).Value = tssn.Text End If If tsdir.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@dir", SqlDataType.Numeric).Value = DBNull.Value Else cm.Parameters.AddWithValue("@dir", SqlDataType.Numeric).Value = tsdir.Text End If If tsalt.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@alt", SqlDataType.Numeric).Value = DBNull.Value Else cm.Parameters.AddWithValue("@alt", SqlDataType.Numeric).Value = tsalt.Text End If If cmbplans.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@plans", SqlDataType.Numeric).Value = DBNull.Value Else cm.Parameters.AddWithValue("@plans", SqlDataType.Numeric).Value = cmbplans.Text End If If cmbrate.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@rate", SqlDataType.NVarChar).Value = DBNull.Value Else cm.Parameters.AddWithValue("@rate", SqlDataType.NVarChar).Value = cmbrate.Text End If If cmbaddon.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@addon", SqlDataType.NVarChar).Value = DBNull.Value Else cm.Parameters.AddWithValue("@addon", SqlDataType.NVarChar).Value = cmbaddon.Text End If If tscm.Text.Trim.Length = 0 Then cm.Parameters.AddWithValue("@cm", SqlDataType.NVarChar).Value = DBNull.Value Else cm.Parameters.AddWithValue("@cm", SqlDataType.NVarChar).Value = tscm.Text End If cm.ExecuteNonQuery() MsgBox("Record has been saved successfully", MsgBoxStyle.Information) cm.Connection.Close()
CREATE TABLE [dbo].[tblsim]( [simid] [numeric](18, 0) IDENTITY(1,1) NOT NULL, [sn] [numeric](18, 0) NOT NULL, [dir] [numeric](18, 0) NOT NULL, [alt] [numeric](18, 0) NULL, [plans] [numeric](18, 0) NULL, [rate] [numeric](18, 0) NULL, [addon] [numeric](18, 0) NULL, [cm] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CONSTRAINT [PK_tblsim_1] PRIMARY KEY CLUSTERED ( [simid] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]
Что я уже пробовал:
Я сталкиваюсь с проблемой, когда пытаюсь вставить данные: ошибка при преобразовании типа данных из NVarchar в Numeric.
Следует отметить, что значение, которое должно быть вставлено в столбец "simid", имеет длину 20 цифр. например, 28808399937872736628.
Я также попытался вставить, изменив тип данных столбца на "BigInt" и Nvarchar, но все равно это не работает!
С Уважением: Шахид
Sergey Alexandrovich Kryukov
Не используйте nvarchar для хранения числовых данных. Используйте соответствующие типы данных. Однако Да, он может вам понадобиться для больших точных чисел.
Что такое "Бигинт"? существует система типов.Численные данные.Типа BigInteger. Это просто работает.
—СА
Member 11765123
Спасибо!! но как мне кодировать систему?Численные данные.BigInteger ' in vb.net когда я объявляю тип данных sql следующим образом:
см.Параметры.AddWithValue ("@sn", SqlDataType.Numeric).Значение = ЦСН.Текст
Sergey Alexandrovich Kryukov
Я ответил в решении 3.
—СА