Apres un OPenEx sur une base SQL
je veux interroger une procédure stockée
comment faire?








Apres un OPenEx sur une base SQL
je veux interroger une procédure stockée
comment faire?








Voici un exemple trouvé dans MSDN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CDatabase db; db.OpenEx("DSN=MyDSN;UID=sa"); #ifdef _DEBUG db.SetQueryTimeout(0); // 0 signifies no timeout #endif db.ExecuteSQL("{call mysp}");








C'est quoi l'équivalence pour
SQLPremier
SQLCol

Utiliser plutôt ADO DB que DAO.Envoyé par biscot19
DAO c'est une technologie obsolète, je le répète encore une fois.
Je ne sais même pas si avec CDataBase et CDaoRecordset on peut appeler des procédures stockées.
Il y a plein d'exemples sur ADO sur le site du MSDN .
Il faut créer une connection , une commande et point-barre ça roule tout seul !

Envoyé par biscot19
????
Quelle est la base de données : Oracle , SQL SERVER ???
Je le répète : ADO .
Il faut mdac2.x en principe déjà installé.








SQL server








Peux tu me donner un exemple de code ADO ,stp

Il y a tout sur le MSDN !!!!
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscexampleadowithextensions.asp
UN exemple parmi d'autres .
Voir sur le site
Sinon sur www.codeproject.com il y a un exemple avec class wrapper
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 // Visual C++ Extensions Example #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \ no_namespace rename("EOF", "EndOfFile") #include <stdio.h> #include <icrsint.h> _COM_SMARTPTR_TYPEDEF(IADORecordBinding, __uuidof(IADORecordBinding)); inline void TESTHR(HRESULT _hr) { if FAILED(_hr) _com_issue_error(_hr); } class CCustomRs : public CADORecordBinding { BEGIN_ADO_BINDING(CCustomRs) ADO_VARIABLE_LENGTH_ENTRY2(2, adVarChar, m_ch_fname, sizeof(m_ch_fname), m_ul_fnameStatus, false) ADO_VARIABLE_LENGTH_ENTRY2(4, adVarChar, m_ch_lname, sizeof(m_ch_lname), m_ul_lnameStatus, false) END_ADO_BINDING() public: CHAR m_ch_fname[22]; CHAR m_ch_lname[32]; ULONG m_ul_fnameStatus; ULONG m_ul_lnameStatus; }; void main(void) { ::CoInitialize(NULL); try { _RecordsetPtr pRs("ADODB.Recordset"); CCustomRs rs; IADORecordBindingPtr picRs(pRs); pRs->Open("SELECT * FROM Employee ORDER BY lname", "dsn=pubs;Integrated Security=SSPI;", adOpenStatic, adLockOptimistic, adCmdText); TESTHR(picRs->BindToRecordset(&rs)); while (!pRs->EndOfFile) { // Process data in the CCustomRs C++ instance variables. printf("Name = %s %s\n", (rs.m_ul_fnameStatus == adFldOK ? rs.m_ch_fname: "<Error>"), (rs.m_ul_lnameStatus == adFldOK ? rs.m_ch_lname: "<Error>")); // Move to the next row of the Recordset. // Fields in the new row will automatically be // placed in the CCustomRs C++ instance variables. pRs->MoveNext(); } } catch (_com_error &e ) { printf("Error:\n"); printf("Code = %08lx\n", e.Error()); printf("Meaning = %s\n", e.ErrorMessage()); printf("Source = %s\n", (LPCSTR) e.Source()); printf("Description = %s\n", (LPCSTR) e.Description()); } ::CoUninitialize(); }








ok mais peux tu me dire comment, une fois que j'ai appelé ma procédure stockée qui me ramene une table, je peux me placer sur la premiere ligne et selectionner les colonnes une par une








personne ne peux m'aider
Partager