dhh*_*dhh 7 c# ado.net odbc stored-procedures winforms
在C#WinForms应用程序中,我必须在MS SQL Express服务器上执行参数化存储过程.数据库连接工作,过程工作,但我收到一条错误消息:
42000:缺少参数'@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();
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息:
错误[4200] [Microsoft] [ODBC SQL Server]过程或方法'getDetailsFromEmail'需要'@ KundenEmail'参数,该参数未提供.
啊,我错过了连接字符串
private static String ODBCConnectionString = "Driver={SQL Server};Server=TESTSRV\\SQLEXPRESS;Database=TestDatabase;";
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢.
好吧 - 我现在设法自己解决这个问题,在MSDN文档的帮助下.
通过ODBC执行存储过程的正确语句如下:
OdbcCommand ODBCCommand = new OdbcCommand("{call getDetailsFromEmail (?)}", ODBCConnection);
ODBCCommand.CommandType = CommandType.StoredProcedure;
ODBCCommand.Parameters.AddWithValue("@KundenEmail", KundenEmail);
Run Code Online (Sandbox Code Playgroud)
不过 - 谢谢你的帮助Thorsten.
小智 5
如何通过使用ODBC .NET提供程序和Visual C#.NET执行SQL参数化存储过程
尽管使用ODBC .NET Provider执行参数化的存储过程与使用SQL或OLE DB Provider执行相同的过程几乎没有什么不同,但有一个重要的区别:必须使用ODBC CALL语法而不是名称来调用存储过程。存储过程。
呼叫语法范例
以下是存储过程的调用语法示例,该存储过程需要一个输入参数:
{致电CustOrderHist(?)}
这是存储过程的调用语法的示例,该存储过程期望一个输入参数并返回一个输出参数和一个返回值。第一个占位符代表返回值:
{?=呼叫程序1(?,?)
样例代码
public static void SheduleDocuments(int siteid, int docid)
{
DataTable objDt = new DataTable();
OdbcConnection odbccon = new OdbcConnection();
try
{
odbccon.ConnectionString =
"Dsn=Dsn;" +
"Uid=databaseuserid;" +
"Pwd=databasepassword;";
odbccon.Open();
OdbcCommand cmd = new OdbcCommand("{call usp_GetEmpDetailsByIDanddepid(?,?)", odbccon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@siteid", siteid);
cmd.Parameters.AddWithValue("@DocumentIDs", docid);
cmd.ExecuteNonQuery();
}
catch (OdbcException objEx)
{
string str = objEx.Message;
}
finally { odbccon.Close(); }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22358 次 |
| 最近记录: |