![](/img/trans.png)
[英]Using DBNull.Value with SqlParameter without knowing sqlDbType?
[英]Cast a sqlparameter into a DBNULL value if it's null
我有一個查詢來更新數據庫中的某個表,並在其中分配一個參數,后者取一個textbox.text的值,如果該值不為null,則可以正常工作,如果可以,則出現此錯誤消息“將字符串轉換為DateTime時,在將每個變量放入DateTime對象之前,分析字符串以獲取日期”。
我的問題是,應該使用哪種類型的轉換來避免使用If語句?
SqlCommand loadbonus = new SqlCommand()
loadbonus.Connection = conn;
loadbonus.CommandText = "UPDATE Client SET [Restant Bonus]=[Restant Bonus]-(SELECT SUM([Prix Total]) FROM Comptoir WHERE [N° Comptoir]='" + tabcontrol.SelectedIndex + "'),[Total Consommé]=[Total Consommé]+(SELECT SUM([Prix Total]) FROM Comptoir WHERE [N° Comptoir]='" + tabcontrol.SelectedIndex + "') OUTPUT INSERTED.[Restant Bonus] WHERE [Code Client]=@CodeClient";
loadbonus.Parameters.Add("@CodeClient", SqlDbType.Int).Value = Convert.ToInt32(clientcodecomptoire.Text);
實際錯誤消息:
“將字符串轉換為DateTime時,在將每個變量放入DateTime對象之前,分析字符串以獲取日期”
我嘗試了以下強制轉換,但沒有成功:
loadbonus.Parameters.Add("@CodeClient", SqlDbType.Int).Value = Convert.ToInt32(clientcodecomptoire.Text)??DBNull.Value;
你可以試試
int number;
bool success = Int32.TryParse(clientcodecomptoire.Text, out number);
loadbonus.Parameters.Add("@CodeClient", SqlDbType.Int).Value = success ? number : DBNull;
如果無法轉換輸入字符串,則number
將為0
;否則為0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.