我正在使用MS Access文件作为数据库处理Visual Studio 2012,并且在插入时遇到了一些问题:
cmd.Parameters.Add(new OleDbParameter("@codigo", cal.CodEtiq)); // Value = int
cmd.Parameters.Add(new OleDbParameter("@data", cal.Data.ToString("yyyy-MM-dd hh:mm"))); //Value = 2013-10-29 00:00
cmd.Parameters.Add(new OleDbParameter("@entidade", cal.EntidadeCal)); // Value = string
cmd.Parameters.Add(new OleDbParameter("@observacao", cal.Observacao)); // Value = string
cmd.Parameters.Add(new OleDbParameter("@certificado", cal.Certificado)); // Value = string
cmd.Parameters.Add(new OleDbParameter("@resultado", cal.Resultado)); // Value = string
cmd.Parameters.Add(new OleDbParameter("@selecionar", cal.Selecionar));// Value = int
cmd.Parameters.Add(new OleDbParameter("@null", DBNull.Value));
cmd.CommandText = "INSERT INTO [Movimento Ferramentas] VALUES (@codigo, CAST(@data AS DATETIME), @entidade, @null, @null, 'Calibração', @null, @observacao, @null, @certificado, @resultado, @selecionar, @null)";
该表定义如下(column = fieldtype):
首先我收到一条错误,上面写着“数据类型在标准表达式中不匹配”然后我查看了Cast的日期,并把它放在那里,现在它给了我一个错误,上面写着“语法错误(操作员丢失) )在查询CAST(@data AS DATETIME)“
的表达式中请帮忙。
更新:正如@Ralph所建议的,我实际上只需将所有空值都设置为 nulls ,而不是使用“@ null”,DBNull.Value 。所以,解决问题谢谢大家。
答案 0 :(得分:0)
看到这个......
enter code here
如果date为null,则为datetime变量赋值null 使用dbnull.value
if (@data== null)
{
new OleDbParameter("@Dt", SqlDbType.DateTime).Value =DBNull.Value;
}
else
{
new OleDbParameter(("@Dt", SqlDbType.DateTime).Value = @data;
}