Lire sql select puis afficher la resultat sous forme d`excel [Résolu]

Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
- - Dernière réponse : cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 27 sept. 2011 à 19:01
bonjours les amis ,
je fait une application en j# (visual studio 2005 ) qui sert a lire une requette sql (select) puis afficher la resultat sous forme excel
le code sql est ecrie par l`utilsateur dans le textbox

ceci la code :
conexion marche tres bien il menque l`execution de requette :



mport System.Collections.Generic.*;
import System.Data.*;
import System.Drawing.*;
import System.ComponentModel.*;
import System.Windows.Forms.*;
import java.sql.*;
import java.sql.SQLException;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.lang.Integer;
/**
* Summary description for Form1.
*/


void select(String b)
{
String a = textBox2.get_Text();
a = "jdbc:odbc:" + a;

try
{
Connection c = getConnection(a);
Statement s = c.createStatement();
ResultSet r = null;
s.executeQuery(b);
r = s.getResultSet();
}
catch (SQLException e)
{
System.out.println("Erreur requête : " + e.getMessage());
}

}



void other(String b){
String a = textBox2.get_Text();
a = "jdbc:odbc:" + a;

try
{
Connection c = getConnection(a);
Statement s = c.createStatement();
ResultSet r = null;
s.executeUpdate(b);
r = s.getResultSet();
}
catch (SQLException e)
{
System.out.println("Erreur requête : " + e.getMessage());
}

}


public static Connection getConnection(String a)
{
Connection con = null;

String nDriver = "com.ms.jdbc.odbc.JdbcOdbcDriver";
try
{
Class.forName(nDriver).newInstance();
}
catch (Exception e)
{
MessageBox.Show("La classe " + nDriver + " n'a pas été trouvée");
e.printStackTrace();
}

try
{
String url = a;
String lg = "";
String pwd = "";
con = DriverManager.getConnection(url, lg, pwd);
MessageBox.Show("conexion etablie");
}
catch (java.sql.SQLException e)
{
MessageBox.Show("probleme de connexion");

}
return con;
}

private void button4_Click(Object sender, System.EventArgs e)throws SQLException,ClassNotFoundException
{

String c = textBox2.get_Text();
int i;
if (c.equals("")) MessageBox.Show("vous n`avez pas donner le nom de base de donne demmander") ;
else {

String b = textBox1.get_Text();

for(i =0 ; i<( b.length()-7);i++)

{ if (b.length()> 6 ) {if (b.Substring(i,6).equals("SELECT")) select(b);
if (b.Substring(i,6).equals("UPDATE")) other(b);
if( b.Substring(i,6).equals("DELETE")) other(b);
if (b.Substring(i,6).equals("INSERT" )) other(b);

}
else (MessageBox.Show("ereur"));

}}}


private void button4_Click_1(Object sender, System.EventArgs e)
{
Close();
}
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
3
Merci
Si tu veux afficher le résultat avec excel, une solution simple (sans JExcelAPi) consiste à créer un fichier .csv (comme un fichier texte mais avec l'extension .csv). Les colonnes sont séparées par des ;

Tu pourras alors l'ouvrir facilement avec excel qui permet de lire ce type de contenu

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 146 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
3
Merci
Pour creer ton fichier csv, tu peux faire ceci :

   String separateur=";";
   String sautLigne="\n";
   ResultSet r = s.executeQuery(a);
   StringBuilder sb = new StringBuilder();
   while(r.next()){
      for(int i=0, i<r.getMetaData().getColumnCount()-1; i++){
         sb.append(r.get(i)).append(separateur);
      }
      sb.append(r.get(r.getMetaData().getColumnCount()-1)).append(sautLigne);
   }

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 146 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
3
Merci
Et apres, il te suffit d'écrire un fichier texte qui contient sb.toString() et de definir .csv comme extension.

Tu trouveras sur internet comment écrire un fichier texte.

Bon courage

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 146 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
3
Merci
Bonjour,

Oui, ca doit être possible, à la limite, tu peux exécuter une ligne de commande en bat qui ouvre le fichier excel, fais des recherches sur internet, et tu trouveras surement (je ne sais pas le faire).

si tu as des soucis, ouvre un nouveau sujet et il y aura surement quelqu'un pour te répondre.

Bon courage

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 146 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
0
Merci
Bonjour,

Quelle est ta question ? Tu ne sais pas comment relier ton application à une base de données. Tupeux chercher des tutoriels sur odbc, tu en trouveras beaucoup sur internet.
Commenter la réponse de cs_Julien39
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
nn je sais bien comment relier mon base de donne avec java , mais je sais pas comment exécuté une raquette écrit par l`utilisateur
svp lie bien mon message
Commenter la réponse de sa7li87
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
je veut aussi afficher le resultat sous forme d`axcel
Commenter la réponse de sa7li87
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
0
Merci
Si tu exposais clairement ton problème, les réponses seraient plus pertinentes.

Regarde du côté d'odbc pour faire la connexion à ta base de données et de JExcelApi pour ce qui concerne Excel. Ces deux libraires sont bien documentées sur internet, tu n'auras pas de mal à comprendre leur fonctionnement.
Commenter la réponse de cs_Julien39
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
bonjours
est que je doit télécharger une bibliothèque qui s`appelle JExcelApi ??
la seul problème et de met mon resultat dans une fichier excel
svp est que tu peut me donne une tuto sur JExcelApi ou je peut le télécharger et comment je peut l`installer sur j# (visual studio 2005 )
svp j`un juste une semaine pour complété se travail
merci d`avance
Commenter la réponse de sa7li87
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
0
Merci
Oui, il faut que tu telecharges JExcelApi et pour la doc, ouvres google, tu trouveras tout de suite par contre ce sera en anglais.
Commenter la réponse de cs_Julien39
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
merci julien est que tu peut me donne une code qui crée une fichier de l`extension .cv puis ecrire sur cette fichier la resultat de :

ResultSet r = s.executeQuery(a);



j`ai aussi un petite problème pour l`affichage de résultat dans la listebox1 puisque il return a la ligne dans chaque attribut par exemple :
nom = achraf
prenon = quell
nom = sami
prenom = aaaa
je veut que l`affichage sois comme ca :
nom prenom
achraf quell
sami aaaa

le code :

ResultSet r = s.executeQuery(a);
ResultSetMetaData metaData = r.getMetaData();
int nbCols = metaData.getColumnCount();
listBox1.get_Items().Clear();
listBox1.BeginUpdate();
while (r.next())
{for (i = 1; i <= nbCols; i++ )
{String nomCol = metaData.getColumnName(i);
listBox1.get_Items().Add("\t" + nomCol +" "+ r.getString(i) + ""+"\t");}
listBox1.EndUpdate();
Commenter la réponse de sa7li87
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
monsieur je te merci tres largement mais j`ai quelque probleme telque :
* .append(sautLigne); ne fonctionne pas
* r.get je le remplacer par getString()
il ya une faute lors d`execution de requette => je pense que le probleme dans writer.write(sb.toString());
svp monsieur fait avec mois + d`efforte et je vous remercie bien
rq : la conexion l`affichage dans le listebox marche tres bien mais je sais comment ecrire la resutat sb.toString() dans la fichier


try{
FileWriter writer = null;
try{writer = new FileWriter("fichier.txt", true);
Connection cx = getConnection(n, l, p);
Statement s = cx.createStatement();
ResultSet r = s.executeQuery(a);
ResultSetMetaData metaData = r.getMetaData();
int nbCols = metaData.getColumnCount();
StringBuilder sb = new StringBuilder(" ");
while (r.next())
{for (i = 1; i <= nbCols; i++)
{sb.Append(r.getString(i));
String nomCol = metaData.getColumnName(i); sb.Append(r.getString(r.getMetaData().getColumnCount()));
writer.write(sb.toString());
}

}
}catch (IOException ex)
{ex.printStackTrace();
}
}
catch (SQLException E)
{
MessageBox.Show("fause requette ");
}
Commenter la réponse de sa7li87
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
c`est mon dernier version tout sa marche 5 sur 5 mais je trouve une fichier vide :


Connection cx = getConnection(n, l, p);
Statement s = cx.createStatement();
ResultSet r = s.executeQuery(a);
ResultSetMetaData metaData = r.getMetaData();
int nbCols = metaData.getColumnCount();
FileWriter writer = null;
try
{
writer = new FileWriter("fichier.csv", true);

StringBuilder sb = new StringBuilder(" ");

while (r.next())
{
for(i=1; i<nbCols; i++)
{
sb.Append(r.getString(i)).Append(separateur);

}

sb.Append(r.getString(r.getMetaData().getColumnCount())).Append(sautLigne);


}


writer.write(sb.toString());
Commenter la réponse de sa7li87
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
j`ai terminer mon programme c`est grâce a toi
merci largement
seulement un dernier service est qu`il ya une commande qui affiche la fichier excel tout seul de que je registre l`information sur elle
Commenter la réponse de sa7li87
Messages postés
6449
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
223
0
Merci
Bonjour,

Alors ton fichier csv est enregistré si je comprends bien ?

Je ne comprends pas vraiment ta dernière question ?
Commenter la réponse de cs_Julien39
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
28 septembre 2011
0
Merci
ui elle marche bien
mais je demande est qu`il ya une commande pour que la fichier .csv s`ouvre tout seule sans que l`utilisateur clique 2 fois sur elle
Commenter la réponse de sa7li87