2014-03-27 181 views
1

我試圖將NULL值插入列類型'int'。我正在使用以下函數,但仍然收到InvalidOperationException。這是我的代碼。請建議。將字符串空值轉換爲int

p.type_id值爲「null」。

cmd.Parameters.AddWithValue("@type_id", ToNullableInt32(p.type_id)) 

    public static int ToNullableInt32(string s) 
    { 
     int i; 
     if (Int32.TryParse(s, out i)) return i; 
     return null; 
    } 
+10

你的返回類型應該是一個可爲空的int:'int?'。 –

+2

你的'ToNullableInt32'方法甚至不應該編譯,所以我對你如何進入'InvalidOperationException'有點困惑。 –

+0

我試過int?但仍然收到錯誤消息。它只適用於我使用DBNull.value。 cmd.Parameters.AddWithValue(「@ type_id」,DBNull.Value) – nav100

回答

3

嘗試:

public static int? ToNullableInt32(string s) 
{ 
    int i; 
    return (Int32.TryParse(s, out i)) ? i : null; 
} 

編輯:我注意到您的評論對你原來的問題有關,只與DBNull的值工作。在這種情況下,請嘗試添加...

cmd.Parameters.AddWithValue("@type_id", ToNullableInt32(p.type_id) ?? DBNull.Value) 

...除了ToNullableInt32方法更新。

2

它應該是一個可空INT

public static int? ToNullableInt32(string s) 
{ 
    ... 
}