c# - 插入 Cast 数据和空字段 C# 时出错

标签 c# .net sql ado.net oledb

我在 Visual Studio 2012 上工作,使用 MS Access 文件作为数据库,但在插入时遇到了很多问题:

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 = 文本
  • Data Ent = 数据/小时
  • GT Ent = 文本
  • Estado = 文本
  • GT saida = 文本
  • observacaoes = 文本
  • requisitante = 数量
  • 证书 = 文本
  • resultado = 文本
  • selecionar = 是/否
  • tipo int = 文本

首先我收到一条错误消息“标准表达式中的数据类型不匹配”,然后我查找了 Cast 中的日期并像这样输入,现在它给我一个错误消息,说“语法错误(缺少运算符) ) 在查询表达式中 CAST(@data AS DATETIME)"

请帮忙。

更新:正如@Ralph 所建议的,我实际上只需要将所有空值作为nulls 而不是使用“@null”,DBNull.Value。所以,问题已解决谢谢大家。

最佳答案

看到这个...

enter code here

如果日期为空,则为日期时间变量分配空值 使用 dbnull.value

 if (@data== null)
 {
    new OleDbParameter("@Dt", SqlDbType.DateTime).Value =DBNull.Value;
 }
else
{
    new OleDbParameter(("@Dt", SqlDbType.DateTime).Value = @data;
}

关于c# - 插入 Cast 数据和空字段 C# 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657196/

相关文章:

c# - Windows Phone PhoneGap 应用后退按钮问题

c# - 找不到路径的一部分?

sql - 如何在启用 FTS3 的情况下将二进制数据存储在 SQLite 表中?

c# - 取消选择 RichTextBox 中的文本

c# - 在 C# 中显示最小化应用程序窗口的计数

c# - 在其执行方法中访问 Task 实例

.net - Microsoft.Exchange.WebServices.Data -- 底层连接已关闭错误

c# - .NET 3.5 C# 没有提供我锁定所需的内容 : Count async saves until 0 again

sql - ORA-12704 : character set mismatch in case statement

mysql - MYSQL表中的年/月/年、时间列如何转换为年/月/日、时间?