2012-05-15 24 views
1

我有一個insertparameter這是一個非空爲nvarchar(MAX),我把它用:設置SqlDataSource的字符串insertparameter的是「默認值」創建NULL錯誤

sds_accountDetail.InsertParameters["firstName"].DefaultValue = ""; 

但它仍然說「無法插入值NULL到列'firstName'「,我做錯了什麼?

+0

聽起來像是從DB側正在添加它,你的coulmn允許它爲空? FirstName是一個不允許空值的列。 – Limey

+0

該表中沒有列允許NULL。 – Bill

+0

您是否嘗試過使用'String.Empty'來查看它是否有效?像這樣:'sds_accountDetail.InsertParameters [「firstName」]。DefaultValue = String.Empty;' – jadarnel27

回答

1

我只是在尋找一個解決這個問題,我遇到了這個頁面作爲第一個谷歌的結果。我知道這個問題是從2012年開始的,但我決定爲了其他有同樣問題的人而發佈帖子。解決此問題的「正確」方法是將存在問題的ParameterConvertEmptyStringToNull屬性設置爲false。它可以在.aspx文件中完成,像這樣:

<InsertParameters> 
    <!-- (...) --> 
    <asp:Parameter Name="firstName" ConvertEmptyStringToNull="false" /> 
    <!-- (...) --> 
</InsertParameters> 

或代碼隱藏,像這樣:

sds_accountDetail.InsertParameters["firstName"].ConvertEmptyStringToNull = false; 
+0

極好的選擇,我會將此標記爲正確的答案,並在將來使用它。現在一年多以後,使用白色空間來表現空白字符串的劣勢顯而易見。這會好很多。 – Bill

1

由字符串中附加一個空間「解決」它:

sds_accountDetail.InsertParameters["firstName"].DefaultValue = " "; 
+1

請記住,即使它不是null,它可能允許您的代碼運行,但一旦用戶開始編輯,最終可能會收到錯誤的數據。 – Limey

+0

我同意,但現在我沒有任何工作。 – Bill

相關問題