簡體   English   中英

更新SQL命令語法錯誤

[英]Update SQL command Syntax Error

我已經檢查並重新檢查,並一遍又一遍地查看它,但是不明白它是怎么了。 我有以下代碼可以使插入工作正常:

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";

代替

UPDATE SET [Movimento Ferramentas] "

UPDATE [Movimento Ferramentas] SET "

這是錯誤的更新語句。下面是正確的語句。

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";

更新的語法大致如下:

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";

您的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";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM