我是一个全新的存储过程,所以我可能会错过一些容易的事情,但我研究了基础知识,并且我试图从vb.net代码中整合它。我创建了一个简单的存储过程(我认为),只运行数据对今天的结果的查询:VB.net到MySql存储过程错误
- 常规DDL - 注意:评论之前和日常身体后会不会被存储服务器
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `GetRuntestToday`()
BEGIN
Select * From runtest.runtest_records where
Test_Date=CURDATE()
order by test_date desc, Convert(test_time_stop,DECIMAL(5,2)) desc;
END
当我登录到主MySql数据库并尝试从MySQL提示符下运行它,它似乎很好地工作。我只需键入call runtest.GetRuntestToday();
并以命令提示符文本格式返回59行数据。
我写了一个VB.net程序来试图获得相同的数据,但我不断收到错误。错误异常详细信息如下:
System.Data.Odbc.OdbcException was unhandled
ErrorCode=-2146232009
Message="ERROR [42000] [MySQL][ODBC 5.1 Driver][mysqld-5.1.51-community-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GetRuntestToday' at line 1"
Source="myodbc5.dll"
StackTrace:
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Odbc.OdbcCommand.ExecuteReader()
at MySqlHelper.mMain.DoMyStoredProcedure() in C:\vss\MySqlHelper\MySqlHelper\mMain.vb:line 2642
at MySqlHelper.mMain.Main() in C:\vss\MySqlHelper\MySqlHelper\mMain.vb:line 29
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
我运行的代码是:
Public Sub DoMyStoredProcedure()
Dim MyConString As String = "My String Details"
Dim dbcRuntest As New OdbcConnection(MyConString)
Dim cmd As New OdbcCommand
Dim reader As OdbcDataReader
cmd.CommandText = "GetRuntestToday"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = dbcRuntest
dbcRuntest.Open()
reader = cmd.ExecuteReader()
dbcRuntest.Close()
End Sub
错误发生就行了:
reader = cmd.ExecuteReader()
我缺少什么?我没有看到任何语法问题,并且存储过程在命令提示符下工作。我用DELIMITER做了一些改动//而不是$$,但似乎没有解决它的问题。
为什么你使用obdc而不是正确的连接器为.net从MySQL?你可以使用它来调用一个过程。 cmd.CommandType = CommandType.StoredProcedure; http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-stored.html – 2012-08-02 19:28:07