我正在尝试停止默认值日期" 01/01/1900"当文本框的值为空时输入表格。我不需要在表格上进行验证null文本框没问题 感谢
using (SqlConnection con = new SqlConnection(WebConfigurationManager
.ConnectionStrings["Molecular"].ConnectionString))
{
con.Open();
using (SqlCommand sc = new SqlCommand(@"Insert into ClinicalFollowUp (MBID, Diagnosis,
DateLastSeen, DateofDeath ) values(@MBID, Upper(@Diagnosis),
Convert (date, @DateLastSeen , 103), Convert (date, @DODeath, 103);", con))
{
sc.Parameters.AddWithValue("@MBID", txtMBID1.Text);
sc.Parameters.AddWithValue("@Diagnosis", txtDiagnosis.Text);
// Date Textbox
sc.Parameters.AddWithValue("@DateLastSeen", txtDateLastSeen.Text);
// Date Textbox
sc.Parameters.AddWithValue("@DODeath", txtDateDeath.Text);
}
con.close();
}
答案 0 :(得分:2)
我个人这样做。
static public object ToDbNullableDate(this string s)
{
DateTime d;
var ok = DateTime.TryParse(s, out d);
return ok ? d : DbNull.Value;
}
然后在你的代码中:
sc.Parameters.AddWithValue("@DateLastSeen", txtDateLastSeen.Text.ToDbNullableDate());
答案 1 :(得分:1)
尝试这样:
if (string.IsNullOrWhiteSpace(txtDateLastSeen.Text)
{
sc.Parameters.AddWithValue("@DateLastSeen", DbNull.Value);
}
else
{
sc.Parameters.AddWithValue("@DateLastSeen", txtDateLastSeen.Text);
}
编辑:IsNullOrWhiteSpace,如建议的那样,有点简单。
答案 2 :(得分:1)
在您的调用堆栈中尽早执行转换。理想情况下,你有一个日期时间选择器的控件,也许这可以为你做转换或者如果它是一个web api然后让序列化器将请求反序列化为适当的类型。
const string sqlStatement = @"插入ClinicalFollowUp(MBID,Diagnosis,DateLastSeen,DateofDeath) 价值观(@MBID,@ Diagnosis,@ DateLastSeen,@ DODeath);"
using(SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings [" Molecular"]。ConnectionString)) 使用(SqlCommand sc = new SqlCommand(,con)) { con.Open(); sc.Parameters.Add(new SqlParameter(" @ MBID",SqlDbType.VarChar,100){Value = txtMBID1.Text}); sc.Parameters.Add(new SqlParameter(" @ Diagnosis",SqlDbType.VarChar,2000){Value = txtDiagnosis.Text.ToUpper()});
// Date Textbox
sc.Parameters.Add(new SqlParameter("@DateLastSeen", SqlDbType.DateTime){Value = getSqlDate(txtDateLastSeen.Text)});
// Date Textbox
sc.Parameters.Add(new SqlParameter("@DODeath", SqlDbType.DateTime){Value = getSqlDate(txtDateDeath.Text)});
sc.ExecuteNonQuery();
}
//待办事项 - 验证文化信息 public static object getSqlDate(string dateTime) { DateTime dt; return!string.IsNullOrEmpty(dateTime)&& DateTime.TryParse(dateTime,CultureInfo.InvariantCulture,DateTimeStyles.None,out dt) ? (对象)dt :( object)System.DBNull.Value; }