Using stored procedures with ADO
Posted
by Chakrapani Ramachandran
on March 1st, 1999
ADO's primary benefits are ease of use, high speed, low memory overhead, and a small disk footprint.
This sample project is for ADODB, an implementation of ADO optimized for use with Microsoft OLE DB providers, including the Microsoft ODBC provider for OLE DB.
Using this we can execute stored procedure, pass arguments and retrieve value. To use this sample you will have to create the two stored procedures mentioned below.
For using this project you need MFC 5.0 OR above + ADO in your machine.
{
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
*/
}

Comments
given a table name how to get the names of triggers and procedures associated with the table
Posted by Legacy on 11/05/2003 12:00amOriginally posted by: josh
given a table name how to get the names of triggers and procedures associated with the table
Replyhow do in Oracle
Posted by Legacy on 11/20/2002 12:00amOriginally posted by: weijsh
Hi,
I have tried using your code with Oracle, and am having problems with things like specifying the input/output parameters.
Has anyone had any success calling Oracle Stored procedures?
thanks
ReplyADO - VC++ Calling Stored Procedures with Parameters
Posted by Legacy on 11/07/2002 12:00amOriginally posted by: Chuck Iyer
Thanks Shellie, I will try with your example. Regards.
Chuck
ReplyADO - VC++ Calling Stored Procedures with Parameters
Posted by Legacy on 11/05/2002 12:00amOriginally posted by: Chuck Iyer
ReplyCan I create database in Visual C++?
Posted by Legacy on 08/14/2002 12:00amOriginally posted by: kong siang
Can i create database in Visual C++? Do you have any idea how to do it? Can i create the database using the SQL statement or any classes?
ReplyThanks
Posted by Legacy on 07/29/2002 12:00amOriginally posted by: Max
I found it very helpful !!
Reply
Nice One
Posted by Legacy on 07/18/2002 12:00amOriginally posted by: Sujit Kumar Behera
ReplyCalling Stored Procedures Using CT Libraries
Posted by Legacy on 01/02/2002 12:00amOriginally posted by: Venugopal
ReplyADO Recordset
Posted by Legacy on 11/07/2001 12:00amOriginally posted by: hemant
I have a recorset, I want to convert the row column format in the recordset into column row format.
Is this possible, if yes, How? Please explain in detail.
ReplyImportDlg.cpp(644) : error C2660: 'Open' : function does not take 3 parameters
Posted by Legacy on 11/02/2001 12:00amOriginally posted by: abche1
ImportDlg.cpp(644) : error C2660: 'Open' : function does not take 3 parameters
ReplyLoading, Please Wait ...