C#调用ODBC连接SQL Server数据库的存储过程

时间:2021-01-20 21:48:55

OdbcConnection con = new OdbcConnection("Driver={SQL Server};server=PC-200201070359;uid=sa;pwd=123;database=test;");
C#调用ODBC连接SQL Server数据库的存储过程            try
C#调用ODBC连接SQL Server数据库的存储过程            {
C#调用ODBC连接SQL Server数据库的存储过程                con.Open();
C#调用ODBC连接SQL Server数据库的存储过程                OdbcCommand command = new OdbcCommand();
C#调用ODBC连接SQL Server数据库的存储过程                command.Connection = con;
C#调用ODBC连接SQL Server数据库的存储过程                command.CommandType = CommandType.StoredProcedure;
C#调用ODBC连接SQL Server数据库的存储过程                //command.CommandText = "MaxAge";   //存储过程名称 
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程                command.CommandText = "{call MaxAge (?, ?,?)}";
C#调用ODBC连接SQL Server数据库的存储过程                //输入参数
C#调用ODBC连接SQL Server数据库的存储过程                OdbcParameter para = new OdbcParameter("@Name1", OdbcType.NVarChar, 10);
C#调用ODBC连接SQL Server数据库的存储过程                para.Value = "James";
C#调用ODBC连接SQL Server数据库的存储过程                command.Parameters.Add(para);
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程                //输入参数
C#调用ODBC连接SQL Server数据库的存储过程                para = new OdbcParameter("@Name2", OdbcType.NVarChar, 10);
C#调用ODBC连接SQL Server数据库的存储过程                para.Value = "Mary";
C#调用ODBC连接SQL Server数据库的存储过程                command.Parameters.Add(para);
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程                //输出参数(参数名称大小写无关)
C#调用ODBC连接SQL Server数据库的存储过程                para = new OdbcParameter("@MaxAge", OdbcType.Int, 4);
C#调用ODBC连接SQL Server数据库的存储过程                para.Direction = ParameterDirection.Output;
C#调用ODBC连接SQL Server数据库的存储过程                command.Parameters.Add(para);
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程                int i = command.ExecuteNonQuery();  //执行成功返回-1
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程                string k = command.Parameters["@Maxage"].Value.ToString();
C#调用ODBC连接SQL Server数据库的存储过程            }
C#调用ODBC连接SQL Server数据库的存储过程            catch (Exception ex)
C#调用ODBC连接SQL Server数据库的存储过程            {
C#调用ODBC连接SQL Server数据库的存储过程
C#调用ODBC连接SQL Server数据库的存储过程                //throw;
C#调用ODBC连接SQL Server数据库的存储过程            }

可能遇到的问题:

使用ODBC方法,只能方法时会报这样的异常:ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]过程 'MaxAge' 需要参数 '@Name1',但未提供该参数。

解决办法:将command.CommandText = "MaxAge";   //存储过程名称 改为 command.CommandText = "{call MaxAge (?, ?,?)}";即可,目前原因未知;前面的方法在sqlclient中是可用的

更多可参看链接:http://www.cnblogs.com/gossip/archive/2009/06/15/1503884.html