如果 sqlparameter 为 null,则将其转换为 DBNULL 值
Cast a sqlparameter into a DBNULL value if it's null
我有一个查询更新我的数据库中的某个 table,我在其中为其分配了一个参数,如果该值不为 null,则后者采用 textbox.text 的值它有效很好,如果是,我会收到此错误消息 "When converting a string to DateTime, parse the string to take the date before putting each variable into the DateTime object"。
我的问题是,我应该使用什么类型的转换来避免使用 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);
实际错误信息:
"When converting a string to DateTime, parse the string to take the date before putting each variable into the DateTime object"
我尝试了以下转换,但没有成功:
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
;
我有一个查询更新我的数据库中的某个 table,我在其中为其分配了一个参数,如果该值不为 null,则后者采用 textbox.text 的值它有效很好,如果是,我会收到此错误消息 "When converting a string to DateTime, parse the string to take the date before putting each variable into the DateTime object"。
我的问题是,我应该使用什么类型的转换来避免使用 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);
实际错误信息:
"When converting a string to DateTime, parse the string to take the date before putting each variable into the DateTime object"
我尝试了以下转换,但没有成功:
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
;