使用ADO执行存储过程

类别:VC语言 点击:0 评论:0 推荐:

ADO使你能够在客户程序中通过数据提供者来方便地处理数据.ADO主要的优点是容易使用、高速、低内存、磁盘占用
在本文的示例工程中我们可以执行存储过程,传递参数给存储过程并接收它的返回值,以下是此过程的主要代码。

{ CString strTmp; CString m_sdatasource; // Data source name CString m_sUserID; // User Id CString m_sPassword; // Password // GET the above values from the user //Without creating Datasource we can use database by the following code /* strTmp.Format( "driver={sql server};" "server=%s;" "Database=%s;""UID=%s;""PWD=%s;", m_server,m_sdatabase,m_sUserID,m_sPassword );*/ strTmp.Format( "dsn=%s;""UID=%s;""PWD=%s;",m_sdatasource,m_sUserID,m_sPassword ); _bstr_t bstrSQLServerConnect; _bstr_t bstrProc =( L"sp_StartByteImport" );; //Stored procedure name _variant_t Final; bstrSQLServerConnect = (LPCTSTR) strTmp; m_status="Empty File"; _ConnectionPtr Conn1; // connection object pointer _CommandPtr Cmd1; // command object pointer _RecordsetPtr Rs1; // recordset object pointer bool bvalid = false; try { Conn1.CreateInstance( __uuidof( Connection ) ); // Instantiating connection object Conn1->ConnectionString = bstrSQLServerConnect; // giving the sqlconnection Conn1->Open( bstrEmpty, bstrEmpty, bstrEmpty ); // open the connection object Cmd1.CreateInstance( __uuidof( Command ) ); // creating command object Cmd1->ActiveConnection = Conn1; // giving the connection handle Cmd1->CommandText = _bstr_t( bstrProc ); // passing the stored procedue Cmd1->CommandType = adCmdStoredProc; // type Cmd1->Parameters->Refresh(); // passing string value as argument to stored procedure Cmd1->Parameters->Item[ _variant_t( (long) 1 ) ]->Value = _variant_t( (LPCTSTR)m_sfilename ); Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, adCmdUnknown ); // executing the stored procedure and storing the recordset value bvalid = true; Final = Rs1->Fields->GetItem( _variant_t( 0L ) )->Value; // getting the first column value of the result row strTmp.Format( "%s", CrackStrVariant( Final) ); // to see the value // put your code to see all column values } catch( CException *e ) // trapping all error messages { TCHAR szCause[255]; e->GetErrorMessage(szCause, 255); m_status=szCause; } catch( _com_error &e ) { m_status=e.ErrorMessage( ); } catch(...) { m_status="Error while executing the Import"; } //we need to create the stored procedures below before running the application //CREATE PROCEDURE sp_AddAccountingInfo @nfinal int, @pcDate datetime, //@pcURL varchar (250), @pcTop varchar (250), //@pcQueryString varchar (250), @pcBytes int, @pcRequests int AS /* Do your operation here */ //CREATE PROCEDURE sp_AddAccountingInfo //@nfinal int, //@pcDate datetime, //@pcURL varchar (250), //@pcTop varchar (250), //@pcQueryString varchar (250), //@pcBytes int, //@pcRequests int //AS /* Put your code here */ }

本文地址:http://com.8s8s.com/it/it3442.htm