我是一個全新的存儲過程,所以我可能會錯過一些容易的事情,但我研究了基礎知識,並且我試圖從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