2013-11-04 121 views
0

我已检查并重新检查,并一遍又一遍地查看它,但无法理解它有什么问题。 我有这样的代码,以使工作正常插入:更新SQL命令语法错误

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.Parameters.Add(new OleDbParameter("@null", DBNull.Value)); 

cmd.CommandText = "INSERT INTO [Movimento Ferramentas] " + 
        "(Codigo , [Data saida], [Entidade], [Data Ent], [GT EntT Nº], Estado, [GT Saida Nº], [Observações1], Requesitante, Certificado, Resultado, Seleccionar, [Tipo de Intervenção]) " + // columns 
        "VALUES (@codigo, @data , @entidade, null, null, 'Calibração', null, @observacao, null, @certificado, @resultado, @selecionar , null)"; 

现在我有那个一直给我无效参数错误更新该代码。

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.Parameters.Add(new OleDbParameter("@certificadoAnterior", certificadoAnterior)); 

cmd.CommandText = "UPDATE SET [Movimento Ferramentas] " + 
        "(Codigo = @codigo, " + 
       "[Data saida] = @data, " + 
       "[Entidade] = @entidade, " + 
       "[Data Ent] = null, " + 
       "[GT EntT Nº] = null," + 
       "Estado = 'Calibração', " + 
       "[GT Saida Nº] = null, " + 
       "[Observações1] = @observacao," + 
       "Requesitante = null," + 
       "Certificado = @certificado, " + 
       "Resultado = @resultado, " + 
       "Seleccionar = @selecionar," + 
       "[Tipo de Intervenção] = null) " + 
       "WHERE Certificado = @certificadoAnterior"; 

那么更新有什么问题?

编辑:根据要求这将会是类似下面我想

String myCommand = "UPDATE SET [Movimento Ferramentas] (Codigo = @codigo, [Data saida] = @data, [Entidade] = @entidade, [Data Ent] = null, [GT EntT Nº] = null, Estado = 'Calibração', [GT Saida Nº] = null, [Observações1] = @observacao, Requesitante = null, Certificado = @certificado, Resultado = @resultado, Seleccionar = @selecionar, [Tipo de Intervenção] = null) WHERE Certificado = @certificadoAnterior"; 
+0

你能做到像字符串mycommand的= “你的SQL语句”; 如果我们可以看到它输出的内容,则更容易看看 – 2013-11-04 12:15:35

+0

我已编辑过您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

你的编辑仍然不正确,表名需要在UPDATE和SET之间,即'UPDATE [Movimento Ferramentas] SET' – christiandev

回答

2

更新的语法去大致如下:

UPDATE <table name> 
SET <list of column expressions> 
WHERE <condition> 

注意,有没有列表达式列表周围的括号。

所以,你应该重写你UPDATE这样的:

cmd.CommandText = "UPDATE [Movimento Ferramentas] SET " + // <<== Changed the order 
      "Codigo = @codigo, " +      // <<== Removed (
      "[Data saida] = @data, " + 
      "[Entidade] = @entidade, " + 
      "[Data Ent] = null, " + 
      "[GT EntT Nº] = null," + 
      "Estado = 'Calibração', " + 
      "[GT Saida Nº] = null, " + 
      "[Observações1] = @observacao," + 
      "Requesitante = null," + 
      "Certificado = @certificado, " + 
      "Resultado = @resultado, " + 
      "Seleccionar = @selecionar," + 
      "[Tipo de Intervenção] = null " +    // <<== Removed) 
      "WHERE Certificado = @certificadoAnterior"; 
+0

圆括号的好处 –

2

而不是

UPDATE SET [Movimento Ferramentas] " 

UPDATE [Movimento Ferramentas] SET " 
1

UPDATE语法是错误的。

UPDATE 
    [ TOP (expression) [ PERCENT ] ] 
    { { table_alias | <object> | rowset_function_limited 
     [ WITH (<Table_Hint_Limited> [ ...n ]) ] 
     } 
     | @table_variable  
    } 

表的名称应该是件UPDATESET之间。

改变你的;

UPDATE SET [Movimento Ferramentas] 

UPDATE [Movimento Ferramentas] SET 

全部命令应该像;

cmd.CommandText = "UPDATE SET [Movimento Ferramentas] 
        (Codigo = @codigo, 
        [Data saida] = @data, 
        [Entidade] = @entidade, 
        [Data Ent] = null, 
        [GT EntT Nº] = null, 
        Estado = 'Calibração', 
        [GT Saida Nº] = null, 
        [Observações1] = @observacao, 
        Requesitante = null, 
        Certificado = @certificado, 
        Resultado = @resultado, 
        Seleccionar = @selecionar, 
        [Tipo de Intervenção] = null) 
        WHERE Certificado = @certificadoAnterior"; 
2

这是错误的更新语句......正确的说法是低于..

cmd.CommandText = "UPDATE [Movimento Ferramentas] SET " + 
       "Codigo = @codigo, " + 
      "[Data saida] = @data, " + 
      "[Entidade] = @entidade, " + 
      "[Data Ent] = null, " + 
      "[GT EntT Nº] = null," + 
      "Estado = 'Calibração', " + 
      "[GT Saida Nº] = null, " + 
      "[Observações1] = @observacao," + 
      "Requesitante = null," + 
      "Certificado = @certificado, " + 
      "Resultado = @resultado, " + 
      "Seleccionar = @selecionar," + 
      "[Tipo de Intervenção] = null " + 
      "WHERE Certificado = @certificadoAnterior";