在C#OleDB表中的错误位置插入字段

时间:2013-10-29 14:28:04

标签: c# sql ms-access-2010 oledbparameter

我正在成功插入表中,但由于某种原因,这些字段处于混乱状态。使用MS Access Database 2010处理Visual Studio 2012 C#。

(没有足够的代表直接发布图片所以请点击链接) 这就是表结构的样子(抱歉,但不能发布超过2个链接)

(column = fieldtype):

  • Codigo = text
  • 数据表示(又名@data)=日期/小时
  • Entidade = text
  • 数据Ent =数据/小时
  • GT Ent = text
  • Estado = text
  • GT saida = text
  • observacaoes = text
  • requisitante = number
  • certificado = text
  • resultado = text
  • selecionar =是/否
  • tipo int = text

这是行Good Row

之类正确行的表中的一个很好的例子

这是我通过INSERT Messed up Row

得到的一行

这就是我制作INSERT的方法

                OleDbCommand cmd = l.CreateCommand();

                cmd.Parameters.Add(new OleDbParameter("@codigo", cal.CodEtiq.ToString()));
                cmd.Parameters.Add(new OleDbParameter("@data", cal.Data));
                cmd.Parameters.Add(new OleDbParameter("@entidade", cal.EntidadeCal));
                cmd.Parameters.Add(new OleDbParameter("@observacao", cal.Observacao));
                cmd.Parameters.Add(new OleDbParameter("@certificado", cal.Certificado));
                cmd.Parameters.Add(new OleDbParameter("@resultado", cal.Resultado));
                cmd.Parameters.Add(new OleDbParameter("@selecionar", cal.Selecionar));

                cmd.CommandText = "INSERT INTO [Movimento Ferramentas] VALUES (@codigo, @data , @entidade, null, null,  'Calibração', null, @observacao, null, @certificado, @resultado,   @selecionar , null)";   

                result = cmd.ExecuteNonQuery();

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

由于您未在INSERT语句中指定列,因此它将在表的列顺序的基础上插入值。不确定您的实际列顺序是什么,但您可以通过在INSERT语句中指定列来解决您的问题。

cmd.CommandText = "INSERT INTO [Movimento Ferramentas] "+
                  "(Codigo , [Data saida], ...............) " + // columns
                  "VALUES (@codigo, @data , @entidade, null, null,  'Calibração', null, @observacao, null, @certificado, @resultado,   @selecionar , null)";