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