C# 空数据时间值
嗨,我正在尝试为datetime(fechaNac)保存一个空值,但我做不到。是否可以在asp中使用我的通用代码C# 空数据时间值,c#,sql,asp.net,C#,Sql,Asp.net,嗨,我正在尝试为datetime(fechaNac)保存一个空值,但我做不到。是否可以在asp中使用我的通用代码 public int add(Cliente dato) { string cmdText = "insert into clientes values ( @nombre, @apellido,@telefono,@celular,@oldtelefono, @oldcelular, @dni , @fechaNac)";
public int add(Cliente dato)
{
string cmdText = "insert into clientes values ( @nombre, @apellido,@telefono,@celular,@oldtelefono, @oldcelular, @dni , @fechaNac)";
Dictionary<string, Object> parametros = new Dictionary<string, Object>();
parametros.Add("@nombre", dato.Nombre);
parametros.Add("@apellido", dato.Apellido);
parametros.Add("@telefono", dato.Telefono);
parametros.Add("@celular", dato.Celular);
parametros.Add("@oldtelefono", dato.OldTelefono);
parametros.Add("@oldcelular", dato.OldCelular);
parametros.Add("@dni", dato.Dni);
parametros.Add("@fechaNac", dato.FechaNac);
try
{
return this.setData(cmdText, parametros);
}
catch (Exception ex)
{
throw new Exception("No se pudo insertar el usuario en la base de datos", ex);
}
}
public int setData(string cmdText, Dictionary<string, Object> listaParametros)
{
int res;
using (SqlCommand cmd = new SqlCommand(cmdText, cn)) {
foreach (KeyValuePair<string, Object> parametro in listaParametros) {
cmd.Parameters.AddWithValue(parametro.Key, parametro.Value);
}
Conectar();
try {
res = cmd.ExecuteNonQuery();
} catch (Exception ex) {
throw new Exception("No se pudo insertar el dato", ex);
} finally {
Desconectar();
}
}
return res;
}
public int add(客户数据)
{
string cmdText=“插入到客户的值中(@nombre、@apellido、@telefono、@celular、@oldtelefono、@oldcellular、@dni、@fechaNac)”;
Dictionary参数=new Dictionary();
参数添加(“@nombre”,dato.nombre);
参数添加(“@apellido”,dato.apellido);
参数加上(“@telefono”,dato.telefono);
参数添加(“@celular”,dato.celular);
参数加上(“@oldtelefono”,dato.oldtelefono);
参数添加(“@oldcellular”,dato.oldcellular);
参数加上(“@dni”,dato.dni);
参数添加(“@fechaNac”,dato.fechaNac);
尝试
{
返回此.setData(cmdText,parametros);
}
捕获(例外情况除外)
{
抛出新的异常(“没有插入到usuario-en-la-base-de-datos中”,例如);
}
}
public int setData(字符串cmdText,字典listaParametros)
{
国际关系;
使用(SqlCommand cmd=newsqlcommand(cmdText,cn)){
foreach(ListaParametos中的KeyValuePair参数){
cmd.Parameters.AddWithValue(parametro.Key,parametro.Value);
}
Conectar();
试一试{
res=cmd.ExecuteNonQuery();
}捕获(例外情况除外){
抛出新异常(“无se pudo insertar el dato”,ex);
}最后{
Desconectar();
}
}
返回res;
}
提前感谢您的帮助!
Yanina是的,但是您需要首先将它合并到
DBNull.Value
cmd.Parameters.AddWithValue(parametro.Key, parametro.Value ?? DBNull.Value);
感谢您的回答,它不起作用,这是我在代码中得到的sql异常,“列名或指定值与表的定义不一致。”听起来脚本还有其他不相关的问题。首先尝试在SSMS中解决这些问题,然后返回应用程序。另外,最好指定要插入的列-
insert-into-clientes(columnName1、columnName2等)值…
I调试应用程序时,唯一指定为null的参数是fechaNac。我找不到我做错了什么如果fechaNac不为null,那么它工作正常,在SSMS工作正常,请在INSERT
语句中明确指定列。将表模式添加到问题中也可能会有所帮助。