2014-01-15 2 views
0

У меня есть проблема в моем коде (в нашем SQL базы данных UnitPrice и TotalPrice типа decimal данные и когда я хочу, чтобы добавить данные, которые я получил эту ошибку
«Ошибка преобразования типа данных VARCHAR в числовой»C# Visual Basic ошибка десятичное

мой код:

#region EDIT RECORD 
    private bool EditRecord() 
    { 
     DataRow row = gridView1.GetDataRow(gridView1.FocusedRowHandle); 
     if (row == null) return false; 
     PopupChillers frm = new PopupChillers(); 
     frm.InitData(this.FindForm(), gridControl3, gridView1, row); 
     bool ret = frm.ShowDialog() == DialogResult.OK; 
     if (ret) 
     { 
      row.ItemArray = frm.Row.ItemArray; 
      string DegiskenId; 
      DegiskenId = row[0].ToString(); 

      #region Kaydet guncelle hata kontrolu 
      try 
      { 
       #region Guncelle 
       if (KayitSekli == "GUNCELLE") 
       { 
        string gsorgu = "UPDATE OrnekTbl SET [email protected],[email protected],[email protected] WHERE ProjectName='" + DegiskenId + "'"; 
        objSqlDataAdapter.UpdateCommand = new SqlCommand(gsorgu, objSqlConnection); 
        objSqlDataAdapter.UpdateCommand.Parameters.Add("@ProjectName", SqlDbType.VarChar).Value = row[0].ToString(); 

        objSqlDataAdapter.UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.VarChar).Value = row[1].ToString(); 
        objSqlDataAdapter.UpdateCommand.Parameters.Add("@TotalPrice", SqlDbType.VarChar).Value = row[2].ToString(); 

        { 
         objSqlConnection.Open(); 
         objSqlDataAdapter.UpdateCommand.ExecuteNonQuery(); 
        } 
        objSqlConnection.Close(); 

       } 
       #endregion 

       #region Kaydet 
       if (KayitSekli == "KAYDET") 
       { 
        string ksorgu = "INSERT INTO OrnekTBL (ProjectName,UnitPrice,TotalPrice) VALUES (@ProjectName,@UnitPrice,@TotalPrice)"; 
        objSqlDataAdapter.InsertCommand = new SqlCommand(ksorgu, objSqlConnection); 
        objSqlDataAdapter.InsertCommand.Parameters.Add("@ProjectName", SqlDbType.VarChar).Value = row[0].ToString(); 

        objSqlDataAdapter.InsertCommand.Parameters.Add("@UnitPrice", SqlDbType.VarChar).Value = row[1].ToString(); 
        objSqlDataAdapter.InsertCommand.Parameters.Add("@TotalPrice", SqlDbType.VarChar).Value = row[2].ToString(); 

        if (objSqlConnection.State == ConnectionState.Closed) 
        { 
         objSqlConnection.Open(); 
         objSqlDataAdapter.InsertCommand.ExecuteNonQuery(); 
        } 
       } 
       #endregion 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      finally 
      { 
       objSqlConnection.Close(); 
      } 
      #endregion 
      row.EndEdit(); 

     } 
     return ret; 
    } 
    #endregion 

ответ

0

сообщение об ошибке кажется довольно ясно Взгляните на ваши параметры:.

objSqlDataAdapter.UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.VarChar).Value = row[1].ToString(); 
objSqlDataAdapter.UpdateCommand.Parameters.Add("@TotalPrice", SqlDbType.VarChar).Value = row[2].ToString(); 

Вы явно объявляете их как SqlDbType.VarChar. Однако имена полей указывают на то, что они являются числовыми значениями. (Деньги? Десятичные?) Параметры должны соответствовать типам данных столбцов. Возможно, что-то вроде этого:

decimal unitPrice = 0; 
if (!decimal.TryParse(row[1].ToString(), out unitPrice)) 
{ 
    // TODO: Handle the error if it's not a valid decimal 
} 
objSqlDataAdapter.UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.Decimal).Value = unitPrice; 
+0

спасибо за ваше любезное интерес, но я не знаю, где я буду писать это в моем коде .. – user3198433

+0

я попытался деньги, но я хочу писать в Colum «UniPrice и Totalprice», как этот 1,567,900.56 – user3198433

+0

@ user3198433: Неясно, что вы подразумеваете под этим. Является ли «цена за единицу и общая цена» столбцом в базе данных? Я бы не советовал отслеживать одни и те же данные в нескольких столбцах. Это может быть вычисленный результат в выражении 'SELECT', представлении или даже в коде. Но * вставка * это значение в базу данных не рекомендуется. Или я вас не понимаю? – David

Смежные вопросы