Looked a lot of books of VC databases, which is rarely designed to operate with VC and store procedures. It is still found on the Internet. The result is still very small, collecting some code snippet for reference.
Code snippet 1:
_VARIANT_T_VVALUE;
_VARIANT_T RECORDSAFFECTED;
Variant VtretVal;
VtretVal.vt = vt_i2;
_COMMANDPTR PCMD = NULL;
_ParameterPtr pprm = null;
_VARIANT_T VTEMPTY (DISP_E_PARAMNOTFOUND, VT_ERROR);
_VARIANT_T VTEMPTY2 (DISP_E_PARAMNOTFOUND, VT_ERROR);
CSTRING TEMPSQL;
PCMD.CREATEINSTANCE (__UUIDOF (Command));
Pprm.createInstance (__UUIDOF (parameter);
PCMD -> ActiveConnection = PCONN;
PCMD -> CommandType = AdcmdStoredProc;
PCMD -> COMMANDTEXT = _BSTR_T (L "sp_addumpdevice");
PPRM = PCMD -> CreateParameter (_BSTR_T ("Retval"), Adinteger, AdParamreturnValue, Sizeof (int), vtretval);
PCMD -> Parameters -> Append (pprm);
IF (strcmp (SBLX, "0") == 0)
{
PPRM = PCMD -> CreateParameter (_BSTR_T ("SBLX"), ADCHAR, ADPARAMINPUT, 4, "Disk");
PPRM -> Value = "Disk";
}
Else
{
PPRM = PCMD -> CreateParameter (_BSTR_T ("SBLX"), Adchar, Adparaminput, 4, "TAPE");
PPRM -> value = "tape";
}
PCMD -> Parameters -> Append (pprm);
PPRM = PCMD -> CreateParameter (_BSTR_T ("SBMC"), Advarchar, Adparaminput, 20, _BSTR_T (SBMC));
PPRM -> Value = _BSTR_T (SBMC);
PCMD -> Parameters -> Append (pprm);
PPRM = PCMD -> CreateParameter (_BSTR_T ("BFLJ"), Advarchar, Adparaminput, 50, _BSTR_T (BFLJ));
PPRM -> Value = _BSTR_T (BFLJ);
PCMD -> Parameters -> Append (pprm);
PCMD -> EXECUTE (& VTempty, & vTempty2, Adexecutenorecords);
Code pieces 2:
m_pparam = m_pcommand-> createparameter ("id", adINteger, adParaminput, -1, (_ variant_t) "10"); // Set various properties to parameters
m_pcommand-> parameters-> append (m_pparam); // Add to the parameter set attribute of the Command object
M_pparam1 = m_pcommand-> createparameter ("name", Advarchar, Adparaminput, 20, (_ variant_t) "Songwenfeng");
m_pcommand-> parameters-> append (m_pparam1);
M_pparam2 = m_pcommand-> CreateParameter ("sdate", advarchar, adpaaminput, 32, (_ variant_t) "2004-6-8");
m_pcommand-> parameters-> append (m_pparam2);
Code snippet 3:
_Parameterptr Para [3];
_Commandptr PCMD;
PCMD.CREATEINSTANCE ("AdoDb.command");
Para [0] .createInstance ("AdoDb.Parameter");
Para [1] .createInstance ("AdoDb.Parameter");
Para [2] .createInstance ("AdoDb.Parameter");
PCMD-> ActiveConnection = m_pconn;
PCMD-> CommandText = "Store Procedure Name"
Para [0] = PCMD-> CreateParameter ("", Adbstr, Adparaminput,
Sizeof (char [50]), vvar); // string type input parameters
PCMD-> Parameters-> Append (Para [0]);
Para [1] = PCMD-> CreateParameter ("", Adinteger, Adparaminput,
SizeOf (int), OlevariantVar; // Integer input parameters
PCMD-> Parameters-> Append (Para [1]);
Para [2] = PCMD-> CreateParameter ("", Adbstr, Adparamoutput,
SizeOf (char [50]), ""); // string type output parameters
PCMD-> Parameters-> Append (Para [2]);
PCMD-> EXECUTE (NULL, NULL, ADCMDSTOREDPROC);
Code segment 4:
Use VC , SQL Server.
Suppose a table: name sex agn.
Now I want to find how many men, how many women.
If you are not using a stored procedure, you must a comparison.
Now I want to ask: How to write this stored procedure, how to call this stored procedure in the VC, how to get the result of the stored procedure.
-------------------------------------------------- -------------
_Commandptr CMMD;
_Parameterptr Param;
HRESULT HR = cmmd.createInstance (__ uuidof (command)); if (Failed (HR))
{AFXMESSAGEBOX ("NewnetDatabase () Failed to create _Commandptr object");
Return "Create Object Fails";
}
CMMD-> ActiveConnection = m_pconnection; // Need to use ADO connection
Cmmd-> commandtype = adcmdstoredProc;
CMMD-> Commandtext = _BSTR_T ("pkg_shenrole.addroleinfo"); // This is the stored procedure name
PARAM = Cmmd-> CreateParameter ("", Adbigint, Adparaminput, Sizeof (long); Nroleid
Cmmd-> Parameters-> append (param);