繁体   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