问题
I've checked and rechecked and looked over and over at it but can't understand what's wrong with it. I have this code to make the insert that works fine:
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)";
And now I have this code for the update that keeps giving me Invalid Arguments 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("@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";
So what is wrong with the update?
EDIT: As requested it'd be something like the following I think
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";
回答1:
The syntax of the update goes roughly as follows:
UPDATE <table name>
SET <list of column expressions>
WHERE <condition>
Note that there are no parentheses around the list of the column expressions.
So you should rewrite your UPDATE
like this:
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";
回答2:
Instead of
UPDATE SET [Movimento Ferramentas] "
do
UPDATE [Movimento Ferramentas] SET "
回答3:
this is wrong update statement...Correct statement is below..
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";
回答4:
Your UPDATE syntax is wrong.
UPDATE
[ TOP ( expression ) [ PERCENT ] ]
{ { table_alias | <object> | rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
}
| @table_variable
}
Table names should be on between UPDATE
and SET
parts.
Change your;
UPDATE SET [Movimento Ferramentas]
to
UPDATE [Movimento Ferramentas] SET
Full command should be like;
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";
来源:https://stackoverflow.com/questions/19767534/update-sql-command-syntax-error