【发布时间】:2011-05-22 10:50:30
【问题描述】:
希望这不是ServerFault 问题...
我正在努力将项目从以 XML 序列化存储数据迁移到 MySQL 数据库。我正在使用昨天回答的previous question 提供的示例。
使用 phpMyAdmin 和 MySQL Workbench 进行连接 我创建了一个名为“sprocOrderSelectSingleItem”的存储过程。据我所知,它似乎与 MySQL 配合得很好。当我运行 SHOW CREATE PROCEDURE sprocOrderSelectSingleItem 它返回以下内容:
CREATE DEFINER=username@% PROCEDURE sprocOrderSelectSingleItem(IN orderID INTEGER)
BEGIN SELECT * FROM tblOrders WHERE ID=orderID; END
我的协作 ASP.NET 代码如下所示:
public static Order GetItem(int ID) { 订单 objOrder = null; 使用 (OdbcConnection objConnection = new OdbcConnection(Utils.ApplicationConfiguration.ConnectionString)) { OdbcCommand objCommand = new OdbcCommand("sprocOrderSelectSingleItem", objConnection); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.AddWithValue("orderID", ID); objConnection.Open(); 使用(OdbcDataReader objReader = objCommand.ExecuteReader()) { 如果(objReader.Read()) { objOrder = FillDataRecord(objReader); } objReader.Close(); } objConnection.Close(); } 返回对象订单; }当我查看页面时,我收到以下错误消息:
ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.0.77]您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“sprocOrderSelectSingleItem”附近使用正确的语法
真的没有意识到可能丢失或出错的地方。我应该/可以运行任何其他测试来确认 MySQL 方面的工作是否正常?我是否错过了在 ASP.NET 中正确传递存储过程调用的步骤?代码在以下行中断:
使用 (OdbcDataReader objReader = objCommand.ExecuteReader())
换行
OdbcCommand objCommand = new OdbcCommand("sprocOrderSelectSingleItem", objConnection);
用这个代替
OdbcCommand objCommand = new OdbcCommand("SELECT * FROM tblOrders WHERE ID=" + ID + ";", objConnection);
一切都按预期进行。
感谢你们提供的任何帮助。
【问题讨论】:
-
更好的标题应该是 ASP.NET / MySQL 存储过程。我现在明白阅读障碍的危害了。我很抱歉。
标签: asp.net mysql stored-procedures