PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Connection à une base HFSQL par Visual studio en utilisant ODBC, structures visibles mais données invisibles
Connection à une base HFSQL par Visual studio en utilisant ODBC, structures visibles mais données invisibles
Started by petitcode, Apr., 26 2018 6:40 PM - 2 replies
Registered member
2 messages
Posted on April, 26 2018 - 6:40 PM
Bonjour,

Je développe un petit outils sous Visual studio pour accéder à une base HFSQL, mais je n'arrive pas à récupérer les donnèes uniquement les structures des tables (noms des champs) ???

Comme ca ne fonctionne pas j'ai utilisé le programme d'exemple donné sur votre site comme ca :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.Odbc;


namespace ConsoleApplication1ODBCSQL
{
    class Sample
    {
        public static void Main()
        {
            try
            {
                // Connexion en utilisant un DSN
                // MaBaseODBC est une source de données ODBC définie avec odbcad32
                // OdbcConnection nwindConn = new OdbcConnection("DSN=MaBaseODBC");
                // Connexion en passant directement les paramètres de connexion
                // ANA=
                // REP=


                // OdbcConnection HFSQLConnection = new OdbcConnection("Driver={HFSQL};  ANA=xxxxx.wdd;   REP= Z:xxx;
 uid = Admin; integritycheck = 0;");

                OdbcConnection HFSQLConnection = new OdbcConnection("DSN=ODBCname");


                // Ouverture de la connexion
                HFSQLConnection.Open();
                // Requête à exécuter sur la base de données
                OdbcCommand MaRequete = new OdbcCommand("SELECT xxxx FROM yyyy", HFSQLConnection);


                Console.WriteLine("Requete executée.");

                // Exécution de la requête
                OdbcDataReader MesDonnees = MaRequete.ExecuteReader();
                // Parcours du résultat de la requête
                while (MesDonnees.Read())
                {
                    Console.WriteLine("\t{0}\t{1}", MesDonnees.GetInt32(0), MesDonnees.GetString(1));
                }
                MesDonnees.Close();
                HFSQLConnection.Close();
            }
            catch (OdbcException eExcpt)
            {
                // Affichage des erreurs
                Console.WriteLine("Source = " + eExcpt.Source);
                Console.WriteLine("Message = " + eExcpt.Message);
            }
            // pause avant de sortir
            Console.ReadLine();
        }
    }
}


Que ca soit par la connexion client serveur ou classic et en utilisant directement la chaîne DSN client/serveur ou classic .

La requête s’exécute puisque j'obtiens bien le message que j'ai inséré et aucune erreur s'affiche mais aucun résultat n’apparaît dans la console.

D'autre part j'avais au départ utilisé l'explorateur de serveur de Visual Studio et j'accède bien à la base et je n'arrive à visualisé que les structures mais à aucun moment les données ??


Je suis sous Windows 10 PRO le serveur est sous Windows Serveur 2012 et un serveur mirror sous Windows 8 Pro (problèmes identique en accès sur les 2 serveurs).

La base est bien utilisable avec le centre de contrôle HFSQL et l'analyse est correct.

La configuration d'ODBC32 me parait conforme notamment puisque je peux consulter les structures de la base sous visual studio.
Je n'ai pas configurer de base par ODBC64 ???

Est ce que quelqu'un aurait une solution pour ce problème ?

Merci d'avance.
Registered member
939 messages
Popularité : +66 (68 votes)
Posted on April, 27 2018 - 1:46 PM
bonjour,

alors perso tout fonctionne chez moi avec votre code, cependant, vous obtenez votre message "Requete executée." mais il est mal placé, votre requête n'a pas encore été exécutée.
C'est le ExecuteReader() qui lance la requête.

J'ai testé avec un ODBC 32, et une DSN Système vers un serveur HFSQL C/S.
Si vous n'avez pas défini de login et mot de passe dans votre DSN il faut les passer en paramètres, avec UID et PWD

OdbcConnection HFSQLConnection = new OdbcConnection("DSN=ODBCname;UID=login;PWD=password");

Pour l'ODBC 64 çà dépend de votre projet, si vous Visual Studio vous faites un test avec 'Any CPU' c'est que vous êtes en 32bits normalement.
si vous avez x64 c'est que vous êtes en 64Bits.
Registered member
2 messages
Posted on April, 28 2018 - 9:46 AM
Bonjour,

Merci pour votre réponse :)

Oups effectivement il vaut mieux placer le message "Requete executée." après ExecuteReader() , quand on veux faire vite on fait des erreurs :(

Donc j'avais bien spécifié les UID et PWD :(

Pour le projet visual studio j'ai testé en AnyCPU et X86 ou X64 mais toujours le même résultat.

Par contre j'ai omis de préciser que lorsque je défini dans ODBC32 une connexion Client serveur avec le driver HFSQL j'obtiens l'erreur S1000 :(

Cela ne ce produit pas en définissant une connexion Classic qui elle me retourne bien les entêtes des champs mais pas les donnèes !!!!

Le driver HFSQL ODBC32 est en version 20.00.09.00 !!!