开发环境是ADO.NET建立连接,数据库是SQL Sever 2000 在进入正题之前,先讲点别的,如何在VC中连接Sybase数据库,
连接字符窜为,_bstr_t strCnn(\"Driver={Sybase System 11};Srvr=RRRRR;Uid=RRR_Mao_bb1;Pwd=user2\");这里,RRRRR是数据库的名称,已经在Sybase->sdedit中设定好了RRR_Mao_bb1 和 user2分别是用户名和密码。#t#
不过使用这种基于ODBC的连接使用一段时间以后,就出现问题了,ADO.NET建立连接出现了“Catastrophic failure”的错误,微软的解释是为了使我们的调用存储过程的例子有更多的通用性,我建了有输入参数,有输出参数,有一个返回记录集,有一个返回值的存储过程,如下:
- CREATE PROCEDURE sp_1 (
- @pin1 int ,
- @pin2 CHAR(10),
- @pout1 int OUTPUT,
- )
- AS
- BEGIN
- declare @retval int
- select @pout1 = @pin1 + 100
- select @pout2 = left( ltrim(rtrim(@pin2)) + \'123\' , 10)
- select Num,Name,Date
- from TABLE1
- select @retval = 1236
- return @retval
- END
对于这个SP来说,ADO.NET建立连接这些个参数是@RETURN_VALUE(int ,返回值)@pin1 ( int ,输入 ) @pin2 ( char(10) ,输入 )@pout1 (int ,输入/输出)@pout1 ( char(10) , 输入/输出) @RETURN_VALUE是第0个参数,@pin1是第1个,依此类推以上信息可以在SQL 的查询分析器中看到,注意,这些参数的顺序很重要调用的前期准备这就不多说了,什么import 库阿,ADO.NET建立连接阿,什么的,不多说了。
假定连接是pConn注意,ADO.NET建立连接这里要把pConn设定成adUseClient型pConn->CursorLocation =adUseClient;下面我要贴具体的代码了,为了精简所贴的代码,我把所有的捕获异常都没贴出来(try catch)使用Refresh的方法来调用。