2012-01-17 52 views
4

這是代碼:字符串Npgsql的爲數字

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

當我執行查詢它顯示了錯誤:「輸入字符串的不正確的格式」 如何將該字符串轉換爲數字。 txt_price是文本框。

+0

,什麼是txt_price.Text的內容???????????????? – 2012-01-17 14:20:30

+0

Dude ...爲你做了這項工作...? – MethodMan 2012-01-17 14:31:04

回答

2

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

這對我有用 – Brezhnews 2012-01-17 14:49:38

+0

'autoInsert.Parameters [「price」]。Value = price;'使得smidge更具可讀性並且可以說更易於維護 – TomEberhard 2015-05-20 18:21:31

3
autoInsert.Parameters[0].Value = ConvertToInt32(txt_price.Text); 
相關問題