Ошибка System.Data.SqlClient.SqlException: «Ошибка преобразования типа данных nvarchar в числовой». в с # - PullRequest
0 голосов
/ 08 мая 2019

Я вставляю данные из одной таблицы базы данных в другую нажатием кнопки, и эта ошибка отображает System.Data.SqlClient.SqlException: 'Error converting data type nvarchar to numeric.' in both tables the data types matches.

Типы данных: id = int, Druh = varchar (50), Nazov = varchar (50), Cena = числовой (18,2). Я думаю, что проблема с "Cena" .`

 using (SqlConnection con = new SqlConnection(constring))
                {
                    using (SqlCommand cmd = new SqlCommand("INSERT INTO stol2 VALUES(@id,@Druh, @Nazov, @Cena)", con))
                    {
                        cmd.Parameters.AddWithValue("@id", row.Cells["Column2"].Value);
                        cmd.Parameters.AddWithValue("@Druh", row.Cells["Column3"].Value);
                        cmd.Parameters.AddWithValue("@Nazov", row.Cells["Column4"].Value);
                        cmd.Parameters.AddWithValue("@Cena", row.Cells["Column5"].Value);
                        con.Open();
                        cmd.ExecuteNonQuery();
                        con.Close();

1 Ответ

0 голосов
/ 08 мая 2019

Вы должны попробовать разобрать перед использованием значения для предотвращения Exception, как это

decimal Cena;
int id;
var validCena = decimal.TryParse(row.Cells["Column5"].Value.ToString(), out Cena);
var validId = int.TryParse(row.Cells["Column2"].Value.ToString(), out id);

if(validCena && validId)
{
   cmd.Parameters.AddWithValue("@id", id);
   cmd.Parameters.AddWithValue("@Druh", row.Cells["Column3"].Value);
   cmd.Parameters.AddWithValue("@Nazov", row.Cells["Column4"].Value);
   cmd.Parameters.AddWithValue("@Cena", Cena);

   con.Open();
   cmd.ExecuteNonQuery();
   con.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...