Работа над настройкой SqlDataSource, соединяющей базу данных MySQL с ASP.NET GridView.
Команда Delete:
DeleteCommand="DELETE FROM troutetracking WHERE id=?id"
Параметр Delete:
<DeleteParameters>
<asp:Parameter Name="id" Type="Int32" />
</DeleteParameters>
Когда я запускаю ссылку удаления в Gridview, появляется следующее сообщение об ошибке:
MySql.Data.MySqlClient.MySqlException: Параметр '? id' должен быть определен.
Каков правильный синтаксис?
В этом блоге возникла аналогичная проблема:
Мне нужно было обновить подключение к строке, чтобы она содержала "Разрешить пользовательские переменные = True".
Я сделал это, используя кнопку "Дополнительно" при настройке источника данных.
Запрос на удаление также необходимо настроить следующим образом:
DeleteCommand="DELETE FROM troutetracking WHERE id=@id"
Это описано в Документация MSDN:
Потому что разные продукты базы данных использовать различные разновидности SQL, Синтаксис строки SQL зависит от текущий поставщик ADO.NET, являющийся, который идентифицируется ProviderName свойство. Если SQL string - это параметризованный запрос или команда, синтаксис параметра также зависит от поставщика ADO.NET быть использованным. Например, если поставщиком является System.Data.SqlClient, который является поставщиком по умолчанию для SqlDataSource класс, синтаксис параметра "@parameterName". Однако, если поставщик установлен на System.Data.Odbc или System.Data.OleDb, Заполнитель параметра -??. Для получения дополнительной информации о параметризованные SQL-запросы и команды, см. Использование параметров с SqlDataSource Control.