【问题标题】:null data time value空数据时间值
【发布时间】:2015-04-09 10:52:05
【问题描述】:

您好,我正在尝试为日期时间 (fechaNac) 保存一个空值,但我做不到。是否可以使用我在 asp 中的通用代码来做到这一点?

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;
    }

提前感谢您的帮助! 亚尼娜

【问题讨论】:

    标签: c# sql asp.net


    【解决方案1】:

    是的,但您需要先将其合并到 DBNull.Value

    cmd.Parameters.AddWithValue(parametro.Key, parametro.Value ?? DBNull.Value);
    

    【讨论】:

    • 感谢您的回答,它不起作用,这是我使用该代码得到的sql异常,“列名或指定值与表的定义不对应。”
    • 听起来脚本还有其他不相关的问题。先尝试在 SSMS 中解决这些问题,然后再返回应用。此外,最好指定要插入的列 - insert into clientes (columnName1, columnName2, etc) values...
    • 我调试了应用程序,唯一分配 null 的参数是 fechaNac 。我找不到我做错了什么
    • 如果 fechaNac 不为空,那么它可以正常工作,在 SSMS 中也可以正常工作
    • 请在INSERT 语句中明确指定列。将表模式添加到问题中也可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 2020-05-31
    • 2010-10-08
    • 1970-01-01
    • 2016-11-21
    • 2015-08-16
    • 2015-07-21
    • 1970-01-01
    相关资源
    最近更新 更多