首先:在声明变量时要设置其允许为空
private DateTime? _member_BirthDay;
public DateTime? Member_BirthDay
{
get { return _member_BirthDay; }
set { _member_BirthDay = value; }
}
其次:在使用的时候给字段赋值
if (time_day.Text.ToString() == " ")
{
mi.Member_BirthDay = null;
}
else
{
mi.Member_BirthDay = Convert.ToDateTime(time_day.Text.ToString());
}
最后:写入数据库,根据datetime的值觉得插入数据
方法一:datetime列为null时,不插入此列
修改insert方法为“为指定列插入数据方法”,方法为: ========参数:tableName===表名,dictionary(key,value)===(列名,值)
public static int Insert(string tableName, Dictionary<string, string> columnsAndValues) {
if (columnsAndValues.Count < 1) {
return -1;
}
StringBuilder columns = new StringBuilder();
StringBuilder values = new StringBuilder();
foreach (KeyValuePair<string, string> kvp in columnsAndValues) {
columns.Append(", [");
columns.Append(kvp.Key);
columns.Append("]");
values.Append(", '");
values.Append(kvp.Value.Replace("'", "''"));
values.Append("'");
}
columns.Remove(0, 1);
values.Remove(0, 1);
string sql = string.Format("INSERT INTO {0} ({1}) VALUES({2});", tableName, columns.ToString(), values.ToString());
int i = 0;
DbHelper dh = new DbHelper();
try {
dh.OpenConn();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = dh.Conn;
i = cmd.ExecuteNonQuery();
}
catch (Exception ex) {
Error.WriteExceptionText(ex);
throw ex;
}
finally {
dh.CloseConn();
}
return i;
}
方法二:给为datetime参数赋值为DBnull.value
parameters[6].Value = Member_Info.Member_BirthDay == null ? (object)DBNull.Value : Member_Info.Member_BirthDay;