在C#WinForms应用程序中,我必须在MS sql Express服务器上执行参数化存储过程.数据库连接工作,过程工作,但我收到一条错误消息:
42000: Missing Parameter ‘@KundenEmail’
虽然我确定我正确添加了参数.也许你们中的一些人可以看看 – 我不知道该怎么搜索……
OdbcConnection ODBCConnection = new OdbcConnection(); try { ODBCConnection.ConnectionString = ODBCConnectionString; ODBCConnection.Open(); } catch (Exception DatabaseConnectionEx) { if (ODBCConnection != null) ODBCConnection.Dispose(); // Error Message return null; } OdbcParameter ODBCParameter = new OdbcParameter("@KundenEmail",OdbcType.NChar,50); ODBCParameter.Value = KundenEmail; OdbcCommand ODBCCommand = new OdbcCommand("getDetailsFromEmail",ODBCConnection); ODBCCommand.CommandType = CommandType.StoredProcedure; ODBCCommand.Parameters.Add(ODBCParameter); DataTable DataTable = new DataTable(); OdbcDataAdapter ODBCDatadapter = new OdbcDataAdapter(ODBCCommand); ODBCDatadapter.Fill(DataTable); ODBCDatadapter.Dispose(); ODBCConnection.Close(); ODBCConnection.Dispose();
这是我收到的错误消息:
ERROR [4200][Microsoft][ODBC sql Server]The Procedure or method
‘getDetailsFromEmail’ expects the ‘@KundenEmail’-parameter,which
was not supplied.
啊,我错过了连接字符串
private static String ODBCConnectionString = "Driver={sql Server};Server=TESTSRV\\sqlEXPRESS;Database=TestDatabase;";
有任何想法吗?提前致谢.
解决方法
好吧 – 我现在设法自己解决这个问题,在MSDN文档的帮助下.
通过ODBC执行存储过程的正确语句如下:
OdbcCommand ODBCCommand = new OdbcCommand("{call getDetailsFromEmail (?)}",ODBCConnection); ODBCCommand.CommandType = CommandType.StoredProcedure; ODBCCommand.Parameters.AddWithValue("@KundenEmail",KundenEmail);
不过 – 谢谢你的帮助Thorsten.