j'ai un message obscur [C++ / SQL / SQL Server 7] - Programmation
Marsh Posté le 08-01-2001 à 10:00:59
Peux-tu m'indiquer le code de creation de ta connection. 
 
Merci 
 
A+
Marsh Posté le 08-01-2001 à 10:46:50
J'aurais tendance à penser que tu a pas fermé ton curseur dans la procédure stockée, car SQL Server garde les curseurs en mémoire 
 
CLOSE Curseur 
DEALLOCATE Curseur
Marsh Posté le 08-01-2001 à 11:20:36
Peux tu egalement nous decririre la procedure stockee. 
 
Est-ce qu'il y a des curseurs ? 
Est-ce qu'il y a une gestion de transactions ? 
A+
Marsh Posté le 08-01-2001 à 11:41:07
A RalphXML >ss
bool CstockeDB::ConnectDataBase(){ 
 
 
 if (!strlen((char *)session_id)) return false; 
 retcode2 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv2); 
 if (retcode2!=SQL_SUCCESS && retcode2!=SQL_SUCCESS_WITH_INFO){ 
ssCloseConnection(); 
ssfprintf(fd,"1 - SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv2); n'a pas marché, renvoyant "%d"
",retcode2); 
ssreturn false; 
 } 
 retcode2 = SQLSetEnvAttr(henv2, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); 
 if (retcode2!=SQL_SUCCESS && retcode2!=SQL_SUCCESS_WITH_INFO){ 
ssCloseConnection(); 
ssfprintf(fd,"2 - SQLSetEnvAttr(henv2, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); n'a pas marché, renvoyant "%d"
",retcode2); 
ssreturn false; 
 } 
 retcode2 = SQLAllocHandle(SQL_HANDLE_DBC, henv2, &hdbc2); 
 if (retcode2!=SQL_SUCCESS && retcode2!=SQL_SUCCESS_WITH_INFO){ 
ssCloseConnection(); 
ssfprintf(fd,"3 - SQLAllocHandle(SQL_HANDLE_DBC, henv2, &hdbc2); n'a pas marché, renvoyant "%d"
",retcode2); 
ssreturn false; 
 } 
 retcode2 = SQLConnect(hdbc2,dsn, SQL_NTS,(SQLCHAR*) "sa", SQL_NTS,(SQLCHAR*) "caron73", SQL_NTS); 
 if (retcode2 != SQL_SUCCESS && retcode2 != SQL_SUCCESS_WITH_INFO){ 
ssCloseConnection(); 
ssfprintf(fd,"4 - SQLConnect(hdbc2,dsn, SQL_NTS,(SQLCHAR*) "sa", SQL_NTS,(SQLCHAR*) "caron73", SQL_NTS); n'a pas marché, renvoyant "%d"
",retcode2); 
ssreturn false; 
 } 
 retcode2 = SQLAllocHandle(SQL_HANDLE_STMT, hdbc2, &hstmt2);ss
 if (retcode2 == SQL_SUCCESS || retcode2 == SQL_SUCCESS_WITH_INFO){ 
ssconnected=true; 
ssreturn true; 
 } 
 else{ 
ssCloseConnection(); 
ssfprintf(fd,"5 - SQLAllocHandle(SQL_HANDLE_STMT, hdbc2, &hstmt2); n'a pas marché, renvoyant "%d"
",retcode2); 
ssreturn false; 
 } 
} 
 
 
Les membres privés sont : 
 
 char message[NB_MESS][1000]; 
 SQLHDBC hdbc2; 
 SQLHENV henv2; 
 SQLRETURNssretcode2; 
 SQLHSTMT hstmt2; 
 unsigned char strsql2[1024]/*,table1[512],table2[512]*/,chaine[65535],dsn[512],session_id[14]; 
ss
 bool connected,dja; 
 FILE *fd; 
 SQLCHAR user[256],pass[256];
Marsh Posté le 08-01-2001 à 14:04:50
Ca me semble correct au niveau de la connection. 
Il faut peux-etre regarder la proc stock au niveau de curseur etc.. 
J'aimerai savoir si tu ouvres ta connection une fois pour toute a ta premiere requete ou si tu utilise cette methode de connection a chaque interrogation DB. 
 
A+
Marsh Posté le 08-01-2001 à 14:26:26
Merci RalphXML , je ne me connecte qu'une seule fois de cette façon. La prod stock est d'une simplicité "biblique" : 
 
¤ 
CREATE PROCEDURE DeclareSession @sid varchar(100),@etat int,@commentaire varchar(500) AS 
 
if exists(select * from session where s_id=@sid) 
begin 
 update session set s_etat = @etat,s_commentaire = @commentaire where s_id=@sid 
end 
else 
begin 
 insert into session values(@sid,@etat,@commentaire) 
end 
¤ 
 
voilu, voila.
Marsh Posté le 08-01-2001 à 14:47:03
Tu n'a pas de gestion de transaction dans ta proc stock (ou enssehors) ? 
 
Pour l'instant je seche. 
 
A+
Marsh Posté le 08-01-2001 à 15:07:22
Ouais rien d'anormal 
T'as bien le SP2 pour SQL Server ? 
on sait jamais avec Microsoftss
a+
Marsh Posté le 31-01-2001 à 16:37:25
OOOOOh salut les gars (je crois qu'il n'y a pas de filles dans ce forum), je continue à piétiner ... N'y aurait-il pas quelqu'un avec une solution à me proposer ???
Marsh Posté le 31-01-2001 à 17:11:30
zopzop .... zopzop...
Marsh Posté le 31-01-2001 à 17:52:41
zopzop .... zopzop .... zopzop .... zopzop 
 
encoress
 
zopzop....zopzop....zopzop....zopzop
Marsh Posté le 31-01-2001 à 20:45:00
Navré, je sèche aussi ! 
Demain j'essaierai de consulter MSDN pour me renseigner plus avant sur les problèmes référencés liés aux curseurs. 
 
A+
Marsh Posté le 07-01-2001 à 00:46:09
A partir d'un programme C++, je tente d'insérer des lignes dans une base de données en faisant appel à une procédure stockée à laquelle je passe des paramètres. Le premier appel passe mais pas les autres; à partir de la deuxième tentatve le message d'erreur est quelque chose du genre "[MICROSOFT][SQL][ODBC]... état du curseur incorrect" alors qu'en créant la connection à la base, je spécifie à SQL qu'il doit gérer lui ledit curseur. D'ailleur, je ne sais pas comment modifier la valeur di curseur. Quelqu'un saurait-il me dire d'où vient le problème.ss
PS : là j'ai pas de code étant donné que je suis pas au travail, je compte sur vous. Je vais me coucher, @ demain