npgsql строка в числовое - PullRequest
       23

npgsql строка в числовое

4 голосов
/ 17 января 2012

Это код:

autoInsert.Parameters.Add(new NpgsqlParameter("price", NpgsqlDbType.Numeric));
autoInsert.Parameters[0].Value = txt_price.Text;
        con.Open();
        autoInsert.ExecuteNonQuery();
        con.Close();

Когда я выполняю запрос, он показывает ошибку: «Входная строка была в неправильном формате». Как мне преобразовать эту строку в Numeric. txt_price - это текстовое поле.

Ответы [ 2 ]

3 голосов
/ 17 января 2012
autoInsert.Parameters[0].Value = ConvertToInt32(txt_price.Text); 
2 голосов
/ 17 января 2012

Попутно Numeric Вы заверили Npgsql, что передаете номер. Затем вы передали строку.

Если вы уже уверены, что из-за другого кода есть десятичное значение в txt_price и больше ничего не может быть, используйте:

autoInsert.Parameters[0].Value = decimal.Parse(txt_price.Text);

В противном случае объедините его с кодом, чтобы убедиться в этом, прежде чем делать что-либо еще:

decimal price;
if(!decimal.TryParse(txt_price.Text, out price))
{
   //code to display message that txt_price doesn't have a valid value.
   return;
}
using(var con = /*your code that constructs the connection*/)
{
  using(autoInsert = /*your code that returns to command*/)
  {
    autoInsert.Parameters.Add(new NpgsqlParameter("price", NpgsqlDbType.Numeric));
    autoInsert.Parameters[0].Value = price;
    con.Open();
    autoInsert.ExecuteNonQuery();
    con.Close();
  }
}
...