Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/12/2006, 14h18   #1
Invité de passage
 
Inscription : mai 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 2
Points : 1
Points : 1
Par défaut .NET Data Provider (FirebirdClient)

Salut à tous,
Cela fait deux jours que j'ai un problème pour récupérer des enregistrements de type chaîne, avec des accents, et triés dans mon application .NET.

Je me suis donc penché dans un premier temps sur les chararcter set et collate. Jusqu'à maintenant même en appliquant les méthodes que j'ai pu voir sur le net, mes tris ne fonctionnaient pas (je pense avoir essayé tout ce qui est possible, à partir de isql ou de IBQuery, mais ca ne marchait pas !). J'ai fini par tester IBEasy+ avec lequel ca marche niquel en précisant à la création de la base, connexion à celle-ci et création des champs le character set et le collate! J'obtiens donc dans IBEasy+ mes enregistrements, triés comme il faut.

A partir de mon appli .NET, la requête non triée est retournée parfaitement, parcontre dès que j'ajoute un order by avec ou sans collate fr_fr, l'appli se bloque (aucune exception n'est lancée !).
J'imagine que cela vient des jeux de caractères ou des string en .NET, mais je ne vois pas comment faire !

J'ai configuré ma connexion/ma requête de la manière suivante en C# :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
FbConnectionStringBuilder sb = new FbConnectionStringBuilder(@"User=SYSDBA;Password=masterkey;Database=""" + Application.StartupPath + @"\test.FDB"";ServerType = 1;");
sb.Charset = "ISO8859_1";
myConnection = new FbConnection(sb.ToString());
myConnection.Open();
FbCommand com = new FbCommand("select * from t order by t_name;", myConnection); 
/* Avec ou sans collate FR_FR après le order by t_name */
            com.Parameters.ADD("Charset", "ISO8859_1");
FbDataAdapter dataA = new FbDataAdapter(com);
dataA.Fill(dataS);
myConnection.Close();
Le programme se bloque au moment de remplir le dataSet (dataA.Fill(dataS)).
Auriez-vous une idée de ce qui pourrait provoquer cela?

Je vous remercie d'avance
Grég
PS: peut être ce poste aura t'il plus sa place dans la partie .NET du forum?
ghuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2006, 16h17   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
normalement si ton champ a été créé avec un charset et un collate
Code :
CREATE TABLE ... t_name VARCHAR(x) CHARACTER SET ISO8859_1 COLLATE FR_FR
, c'est ceux ci qui seront utilisés par défaut par un
Code :
SELECT * FROM t ORDER BY t_name
pas besoin d'ajouter quoique soit d'autre
mais tu peux faire :
Code :
SELECT * FROM t ORDER BY t_name COLLATE FR_FR
ou même jouer avec :
Code :
SELECT * FROM t ORDER BY t_name COLLATE FR_CA
voir : http://blog.developpez.com/index.php...&c=1&tb=1&pb=1

s'il y a un pb c'est du coté de .Net qu'il faut chercher et à mon avis le
Code :
 com.Parameters.ADD("Charset", "ISO8859_1");
est de trop, mais tu dois pouvoir spécifier ton jeu de caractères dans ta chaîne de connexion, ceci dit je ne cause pas .Net
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 14h42   #3
Invité de passage
 
Inscription : mai 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 2
Points : 1
Points : 1
Merci de ta réponse,
En effet la derniere ligne est en trop (je l'avais rajouté dans un moment de grand désespoir )

J'ai repris les choses depuis le début en précisant le character set par défaut lors de la création de la base et les collates de chaque champ lors des créations des tables, mais plus directement dans mes requêtes comme tu me l'as proécisé et ca fonctionne !

Merci encore de ton aide
ghuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h37.


 
 
 
 
Partenaires

Hébergement Web