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

sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 19 sept. 2011 à 15:13 - Dernière réponse : cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention
- 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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 23 sept. 2011 à 10:53
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

Merci cs_Julien39 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 25 sept. 2011 à 21:21
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);
   }

Merci cs_Julien39 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 25 sept. 2011 à 21:22
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

Merci cs_Julien39 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 27 sept. 2011 à 19:01
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

Merci cs_Julien39 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 19 sept. 2011 à 15:16
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 19 sept. 2011 à 15:57
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 19 sept. 2011 à 15:59
0
Merci
je veut aussi afficher le resultat sous forme d`axcel
Commenter la réponse de sa7li87
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 21 sept. 2011 à 10:37
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 22 sept. 2011 à 12:48
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 22 sept. 2011 à 14:07
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 25 sept. 2011 à 16:40
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 26 sept. 2011 à 01:26
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 26 sept. 2011 à 11:40
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 26 sept. 2011 à 14:43
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
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 26 sept. 2011 à 20:28
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
sa7li87 10 Messages postés lundi 2 mars 2009Date d'inscription 28 septembre 2011 Dernière intervention - 26 sept. 2011 à 22:43
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.