2012-01-17 5 views
4

Voici le code:chaîne Npgsql à numérique

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

Lorsque j'exécute la requête, il montre l'erreur: « La chaîne d'entrée était pas dans un format correct. » Comment puis-je convertir cette chaîne en numérique. txt_price est la zone de texte.

+0

et quel est le contenu de txt_price.Text ??????????????? –

+0

Mec ... a fait ce travail pour toi ... ??? – MethodMan

Répondre

2

En passant Numeric vous avez assuré Npgsql que vous passiez un certain nombre. Ensuite, vous avez passé une chaîne.

Si vous êtes déjà sûr, en raison de tout autre code, qu'il ya une valeur décimale dans txt_price et il ne pouvait pas être autre chose, utilisez:

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

Sinon, le combiner avec le code pour assurer cela, avant de faire quoi que ce soit d'autre:

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(); 
    } 
} 
+0

Cela a fonctionné pour moi – Brezhnews

+0

'autoInsert.Parameters [" price "]. Value = prix;' rend un smidge plus lisible et sans doute plus maintenable – TomEberhard

3
autoInsert.Parameters[0].Value = ConvertToInt32(txt_price.Text);