我正在使用 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):
- Codigo = 文本
- 数据说(又名@data)=日期/小时
- Entidade = 文本
- 数据 Ent = 数据/小时
- GT Ent = 文本
- Estado = 文本
- GT saida = 文本
- 观察=文本
- 要求=数量
- 证书=文本
- 结果=文本
- 选择=是/否
- 提示 int = 文本
首先,我收到一条错误消息,说“标准表达式中的数据类型不匹配”,然后我查找了日期的演员表并这样写,现在它给了我一个错误,上面写着“语法错误(缺少运算符)”查询表达式 CAST(@data AS DATETIME)"
请帮忙。
更新:正如@Ralph 所建议的那样,我实际上只需将所有空值都作为空值而不是使用“@null” DBNull.Value。所以,问题解决了,谢谢大家。