我的代码抛出了主题中提到的此错误。我不知道原点,因为使用ODBC连接到mysql它可以工作,但使用SQL连接到SQL Server Express并不起作用。如何解决?
SqlCommand Command = new SqlCommand("insert into lojas (NIF, Loja, bloqueado, DataFim, lastupdate, Nome) values (?, ?, ?, ?, ?, ?)", connection);
Command.CommandType = CommandType.Text;
Command.Parameters.AddWithValue("@NIF", grid_lic.CurrentRow.Cells[1].Value);
Command.Parameters.AddWithValue("@Loja", grid_lic.CurrentRow.Cells[2].Value);
Command.Parameters.AddWithValue("@Bloqueado", grid_lic.CurrentRow.Cells[3].Value);
Command.Parameters.AddWithValue("@DataFim", grid_lic.CurrentRow.Cells[4].Value);
Command.Parameters.AddWithValue("@lastupdate", grid_lic.CurrentRow.Cells[5].Value);
Command.Parameters.AddWithValue("@Nome", grid_lic.CurrentRow.Cells[6].Value);
connection.Open();
Command.ExecuteNonQuery();
答案 0 :(得分:1)
?
在SQL Server的t-sql语法中不是有效的参数占位符。您需要更新查询以获得命名参数:
insert into lojas (NIF, Loja, bloqueado, DataFim, lastupdate, Nome)
values (@NIF, @Loja, @Bloqueado, @DataFim, @lastupdate, @Nome)
当您添加参数值时,AddWithValue
调用中使用的参数名称将用于将值放在查询中的正确位置。