设置将MySQL数据库连接到ASP .NET GridView的SqlDataSource。
删除命令是:
DeleteCommand="DELETE FROM troutetracking WHERE id=?id"
Delete参数是:
<DeleteParameters>
<asp:Parameter Name="id" Type="Int32" />
</DeleteParameters>
当我在Gridview上运行删除链接时,会出现以下错误消息:
MySql.Data.MySqlClient.MySqlException:必须定义参数'?id'。
正确的语法是什么?
答案 0 :(得分:1)
MSDN's documentation中涵盖了这一点:
因为不同的数据库产品 使用不同种类的SQL, SQL字符串的语法取决于 当前的ADO.NET提供商 使用,由...识别 ProviderName财产。如果是SQL string是参数化查询或 命令,参数的语法 还取决于ADO.NET提供程序 正在使用。例如,如果 提供者是System.Data.SqlClient, 这是默认的提供商 SqlDataSource类,语法 参数是'@parameterName'。 但是,如果提供程序设置为 System.Data.Odbc或 System.Data.OleDb, 参数的占位符是'?'。 有关的更多信息 参数化的SQL查询和 命令,请参阅Using Parameters with the SqlDataSource Control。
答案 1 :(得分:0)
此博客遇到了类似的问题:
我需要做的是更新连接到字符串以包含“允许用户变量= True”。
我在设置数据源时使用“高级”按钮完成了此操作。
还需要将删除查询调整为:
DeleteCommand="DELETE FROM troutetracking WHERE id=@id"