2015-12-19 2 views
0

Мой код вызывает эту ошибку, указанную в теме. Я не знаю происхождение, потому что с помощью 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(); 

ответ

1

? не является действительным заполнителем параметр в T-SQL синтаксиса SQL Server. Вам необходимо обновить ваш запрос, чтобы иметь именованные параметры:

insert into lojas (NIF, Loja, bloqueado, DataFim, lastupdate, Nome) 
values (@NIF, @Loja, @Bloqueado, @DataFim, @lastupdate, @Nome) 

При добавлении значения параметров, имя параметра, используемого в AddWithValue вызова будет использоваться, чтобы поместить значение в правильном месте в запросе ,

+0

Я думаю, что это была проблема, но теперь я встал, когда вставляю данные: «Невозможно вставить значение NULL в столбец« Идентификатор », таблица« Licenciamento.dbo.lojas »; столбец не допускает нулей. INSERT не работает «. Но Id задается как auto-incrementable в sql-сервере. Не должно ли оно автоматически заполняться в datagrid? – TFDD