【问题标题】:Parameter '?' must be defined范围 '?'必须定义
【发布时间】:2014-03-10 18:44:20
【问题描述】:

我制作了一个简单的 ASP.NET 应用程序来管理 MySQL 数据库。我一直在使用 Visual Studio 2013 及其自动生成的元素,例如 DetailsView、GridView 等。该应用程序在本地运行良好(包括对我的网站托管的 MySQL 服务器的查询),但是当我在我的 webhotel 上尝试该应用程序时,我得到了错误:

参数'?'必须定义

我一直在联系客户支持,他们声称这不是服务器问题,而是脚本问题(尽管我说它在本地运行良好)。

我的 .aspx 页面中的 SqlDataSource 示例如下所示:

InsertCommand="INSERT INTO categories (overName, categoryID) VALUES (?, ?)"

<InsertParameters>
                <asp:Parameter Name="overName" Type="String" />
                <asp:Parameter Name="categoryID" Type="Int32" />
</InsertParameters>

根据 MySQL 自己的错误站点,这是 MySQL 连接器早期版本中的一个问题:

http://bugs.mysql.com/bug.php?id=66060

但是我们使用的是 6.8.3 版本。我发现的另一个看似可行的解决方案是

http://blog.tjitjing.com/index.php/2009/05/mysqldatamysqlclientmysqlexception-parameter-id-must-be-defined.html

但无济于事。还有,好像

非常感谢任何和所有帮助,因为我无能为力。谢谢

【问题讨论】:

  • 你能简单地用(@overName, @categoryID)代替(?, ?)吗?

标签: mysql asp.net mysql-connector connector-net


【解决方案1】:

我认为是这条线导致了问题..

InsertCommand="INSERT INTO categories (overName, categoryID) VALUES (?, ?)"

应该是这样的..

InsertCommand="INSERT INTO categories (overName, categoryID) VALUES (?overName, ?categoryID)"

我相信您需要其中列出的字段。我已经有几个月没有使用 MySQL 了,但这就是我当时使用的方式,这就是我在 SQL 中的方式。

希望这会有所帮助。

【讨论】:

  • 谢谢你,这有帮助。我的印象是问号只会采用按时间顺序传递给的参数,即?,?会自动接管Name和categoryID,因此称为“未命名参数”,但我猜不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2010-11-27
相关资源
最近更新 更多