Bonjour à tous,

J'ai un souci sous une appli DotNet (C#) avec la quelle je me connecte à une base Oracle en OLEDB.
J'ai mon serveur d'origine qui est avec le Provider MSDAORA et le Provider vers lequel je migre qui est ORAOLEDB.

L'appli fait tout d'abord un Select sur la base (Fonctionne bien)
Ensuite, je stocke les données dans un DataSet
Je mets à jour le DataSet et enfin je veux faire un Update

Je vous mets des extraits du code :

Connexion + Select
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
OleDbConnection dbConnexion = (OleDbConnection)OleDbAccess.OpenConnection(strDBCnx);
 
OleDbCommand selectCmd = new OleDbCommand("SELECT LOGIN, PASSWD, BAD_LOGIN_COUNT, DATLASTLOG FROM TUSERS")
selectCmd.UpdatedRowSource = UpdateRowSource.OutputParameters;
 
selectCmd.Connection = dbConnexion;
OleDbDataAdapter daUsers = new OleDbDataAdapter(selectCmd);
 
DataSet ds = new DataSet();
daUsers.Fill(ds);

Update de la table (entre le select et l'update, certaines données ont été mises à jour dans le dataset) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
OleDbCommandBuilder cbUser = new OleDbCommandBuilder(daUsers);
daUsers.Update(ds);
Avec le Provider MSDAORA, tout fonctionne bien, mais avec le driver ORAOLEDB, je me retrouve avec le message suivant :

"Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information"

Je vous mets les infos que j'ai récupérées en loggant mes deux serveurs à propos l'objet "dbConnexion"

PROVIDER MSDAORA
Database :
Datasource : ZZZZZ.YYYY
Provider : MSDAORA.1
Server Version : 03.02.0000 Oracle 9i Enterprise Edition Release 9.2.0 - 64bit Production
Connection String : Provider=MSDAORA.1;User ID=XXX;Data Source=ZZZZZ.YYYY; Min Pool Size=5; Max Pool Size=10;Pooling=true


PROVIDER ORAOLEDB
Database :
Datasource : ZZZZZ.YYYY
Provider : OraOLEDB.Oracle.1
Server version : 9.2.0.7.0
Connection string : Provider=OraOLEDB.Oracle.1;User ID=XXX;Data Source=ZZZZZ.YYYY; Pool Size=5; Max Pool Size=10;Pooling=true


J'espère qu'avec tout ça vous pourrez m'aider........

Si vous avez besoin de plus d'infos, faites moi signe !!!!

++