Mic*_*cio 5 .net c# sql oledb ado.net
我正在使用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)";
Run Code Online (Sandbox Code Playgroud)
该表定义如下(column = fieldtype):
首先我得到一个错误,说"标准表达式中的数据类型不匹配",然后我查看了Cast的日期,并把它放在那里,现在它给了我一个错误,上面写着"语法错误(操作员缺失)"查询表达式CAST(@data AS DATETIME)"
请帮忙.
更新:正如@Ralph所建议的那样,我实际上只需将所有空值作为空值而不是使用"@null",DBNull.Value.所以,解决问题谢谢大家.
小智 0
看到这个...
enter code here
Run Code Online (Sandbox Code Playgroud)
如果日期为 null,则使用 dbnull.value为日期时间变量分配 null
if (@data== null)
{
new OleDbParameter("@Dt", SqlDbType.DateTime).Value =DBNull.Value;
}
else
{
new OleDbParameter(("@Dt", SqlDbType.DateTime).Value = @data;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1086 次 |
| 最近记录: |