Ouvrir BD avec C++ natif sous windows mobile 5.0

Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 - 22 mai 2007 à 18:03
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 - 23 mai 2007 à 20:12
salut à tous,

alors voilà mon objectif : je souhaite créer une
application MFC fonctionnant sous windows mobile 5.0 qui permettrait
d'ouvrir des bases de données de type Access. c'est à dire que je force
pas l'origine de la base à Access pour résoudre mon problème, mais je
souhaite pouvoir retrouver mes tables dans un fichier si possible
unique, et sans avoir à passer par un serveur/client ou je ne sais trop
quoi comme mysql.

le format .cdb m'avait l'air intéressant, ou bien .sdf mais je sais pas comment faire une base .sdf.

Je précise aussi que je ne souhaite pas développer en DotNet.

Jusqu'à maintenant j'ai déjà :

   
- réalisé une appli fonctionnant exclusivement sur pc (winxp) ouvrant
et ayant accès aux données d'une base .mdb, avec des RecordSet.
    - testé cette appli pour pocket et ai fait chou blanc à cause d'un certain ole2.h qui n'est pas identique pour pc et pocket.
   
- essayé moult choses avec mysql avant de comprendre qu'il fallait
passer par un serveur. (j'ai pas très très bien tout compris)
    -
tenté des trucs avec les fonctions CEOpenDatabase() et
CEOpenDatabaseEx2(), CEMountDBVol() sans succès :
ERROR_INVALID_PARAMETER à chaque coup sans comprendre pourquoi. Si je
crée une base avec CECreateDatabase() pas de problème pour l'ouvrir
mais impossible d'ouvrir une base cdb. c'est peut-être normal ??
   
- tenté d'utiliser SQL Server Mobile 2005, avec l'aide... ça me dit
d'inclure des fichiers d'entête que je n'ai pas forcément sous le même
nom exact. exemple : ca_merge30.h ou ca_mergex20.h au lieu du
ca_mergex30.h réclamé. et même en essayant d'ajouter tous ces fichiers,
je n'arrive pas à utiliser SqlCeEngine.
    - j'ai essayé aussi CCEDBDatabase sans succès.
    - ainsi que quelque chose comme SQLConnection, mais pas mieux.

et la je craque.

voici un extrait de code, si jamais il y a une erreur grosse comme un
éléphant qui traine et cause l'invalid_parameter et que quelqu'un veut
bien me la montrer...

    CEGUID cedb;

    CEOID ceoidDB = 0;

    HANDLE db = NULL;


    CFileDialog openfile(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_FILEMUSTEXIST,

        TEXT("Pocket Access Databases (*.cdb)|*.cdb"),NULL,0);

    if (openfile.DoModal() == IDOK)

    {   

        if (CeMountDBVol(&cedb,openfile.GetPathName().GetBuffer(),OPEN_EXISTING))

            MessageBox(TEXT("YES"),TEXT("YES"),MB_OK);

        else

        {

            switch(GetLastError())

            {

            case ERROR_DISK_FULL:

                MessageBox(TEXT("ERROR_DISK_FULL"),TEXT("ERREUR"),MB_OK);

                break;

            case ERROR_PATH_NOT_FOUND:

                MessageBox(TEXT("ERROR_PATH_NOT_FOUND"),TEXT("ERREUR"),MB_OK);

                break;

            case ERROR_NOT_ENOUGH_MEMORY:

                MessageBox(TEXT("ERROR_NOT_ENOUGH_MEMORY"),TEXT("ERREUR"),MB_OK);

                break;

            case ERROR_ACCESS_DENIED:

                MessageBox(TEXT("ERROR_ACCESS_DENIED"),TEXT("ERREUR"),MB_OK);

                break;

            case ERROR_ALREADY_EXISTS:

                MessageBox(TEXT("ERROR_ALREADY_EXISTS"),TEXT("ERREUR"),MB_OK);

                break;

            case ERROR_INVALID_PARAMETER:

                MessageBox(TEXT("ERROR_INVALID_PARAMETER"),TEXT("ERREUR"),MB_OK);

                break;

            default:

                MessageBox(TEXT("Default"),TEXT("ERREUR"),MB_OK);

                break;

            }

        }

        return FALSE;

Voilà,
donc si quelqu'un a déjà vu passer ce genre de projet (réussi) ça
serait sympathique de me filer un lien, sinon je suis ouvert à toute
suggestion, plus ou moins constructive. mais rien du genre passe en C#
ou en VB et en DotNet merci


Merci aux bonnes âmes qui daigneront me répondre.


Eventuellement, je ne suis pas contre quelque explication à propos du
fonctionnement de mysql et autres systèmes par rapport à Access.

Loki

3 réponses

cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
22 mai 2007 à 23:20
En fait le format cdb n'est plus intégré depuis PocketPc 2002
Il te faudra utiliser une dll tierce de InTheHand mais je n'arrive pas à trouver les entêtes. Ce projet n'est plus maintenu
Pour le SQLCe, c'est un format de données propres au Pocket PC donc il te faudra un intermédiaire pour transferer (j'ai fait un exemple pour du Txt vers SDF et SDF vers Txt) des données PC > Pocket PC et vice Versa.
L'idéal serait du XML, c'est un format que tu devrais pouvoir traiter sans trop de problèmes, mais qui prend beaucoup de place.
Je suis désolé je connais rien en c++, mais j'ai vu des exemples code:blocks avec le traitement de fichier XML en C dont cela doitêtre transposable
Bon courage et surtout tient nous au courant.

Le savoir ne sert que si il est partagé par tous
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
23 mai 2007 à 10:23
Salut, merci pour ta réponse.

j'avais déjà lu quelques commentaires parlant de InTheHand. mais apparemment c'est payant, et je n'ai pas la possibilité de prendre quelque chose de payant.

je vais voir ce que je peux faire avec les .sdf.

décidément, personne code en C/C++ sur pocket ou quoi ???

Loki
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
23 mai 2007 à 20:12
Non, de plus eVc 4.0 n'est plus maintenu

Le savoir ne sert que si il est partagé par tous
0
Rejoignez-nous