簡體   English   中英

如果為空,則將sqlparameter強制轉換為DBNULL值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM