Lire sql select puis afficher la resultat sous forme d`excel

Résolu
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011 - 19 sept. 2011 à 15:13
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 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();
}

16 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
23 sept. 2011 à 10:53
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
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 sept. 2011 à 21:21
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);
   }
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 sept. 2011 à 21:22
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
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
27 sept. 2011 à 19:01
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
19 sept. 2011 à 15:16
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.
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
19 sept. 2011 à 15:57
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
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
19 sept. 2011 à 15:59
je veut aussi afficher le resultat sous forme d`axcel
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
21 sept. 2011 à 10:37
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.
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
22 sept. 2011 à 12:48
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
22 sept. 2011 à 14:07
Oui, il faut que tu telecharges JExcelApi et pour la doc, ouvres google, tu trouveras tout de suite par contre ce sera en anglais.
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
25 sept. 2011 à 16:40
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();
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
26 sept. 2011 à 01:26
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 ");
}
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
26 sept. 2011 à 11:40
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());
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
26 sept. 2011 à 14:43
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 sept. 2011 à 20:28
Bonjour,

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

Je ne comprends pas vraiment ta dernière question ?
0
sa7li87 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 28 septembre 2011
26 sept. 2011 à 22:43
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
0
Rejoignez-nous