Установка пустой строки в null при вставке в базу данных
Я не смог найти правильное решение для этой проблемы, и я знаю, что это так просто, но я забыл, как это сделать. У меня есть форма с одним полем текстового поля, которое пользователь не должен заполнять. Я хочу вставить в базу данных значение NULL, а не 0, как сейчас. Я не уверен, что мне не хватает, хотя. Текстовое поле называется taxRateTxt
и то, что у меня в данный момент у меня не работает
try
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
{
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.Parameters.Add(new SqlParameter("@FIPSCountyCode", countyCodeTxt.Text));
cmd.Parameters.Add(new SqlParameter("@StateCode", stateCodeList.SelectedValue));
cmd.Parameters.Add(new SqlParameter("@CountyName", countyNameTxt.Text));
string taxStr = taxRateTxt.Text;
//test for an empty string and set it to db null
if (taxStr == String.Empty)
{
taxStr = DBNull.Value;
}
cmd.Parameters.Add(new SqlParameter("@TaxRate", taxStr));
if (AddBtn.Visible == true)
cmd.CommandText = addQuery;
if (EditBtn.Visible == true)
{
cmd.CommandText = editQuery;
}
cmd.ExecuteNonQuery();
cn.Close();
}
Что мне здесь не хватает?
2 ответа
Решение
Удалить этот блок кода
string taxStr = taxRateTxt.Text;
//test for an empty string and set it to db null
if (taxStr == String.Empty)
{
taxStr = DBNull.Value;
}
и измени это
cmd.Parameters.Add(new SqlParameter("@TaxRate", taxStr));
к этому
cmd.Parameters.Add(new SqlParameter("@TaxRate", string.IsNullOrEmpty(taxRateTxt.Text) ? (object)DBNull.Value : taxRateTxt.Text));
Проходя в Convert.DBNull
(или же DBNull.Value
) сделаю это.
http://msdn.microsoft.com/en-us/library/system.convert.dbnull(v=vs.110).aspx
Конечно, вам сначала нужно проверить строковое значение, а затем передать его.