Bonjour,


Je suis en train de crée un programme qui me permet de visualiser les photos en utilisant une base de donnés Mysql.

J'ai crée un classe connexion qui contient des méthodes pour communiquer avec la base de données :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package ImagesBrowser;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
 
public class Connexion {
 
private Connection conn = null;
private Statement smt = null;
public static int retour;
 
 
static {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
 
 
public Connexion(final String host, final String login, final String pass, final String base) {
try {
conn = DriverManager.getConnection("jdbc:mysql://" + host + "/"
+ base + "?" + "user=" + login + "&password=" + pass);
smt = conn.createStatement();
retour=1;
System.out.println("Ok");
} catch (SQLException e) {
e.printStackTrace();
}
}
 
public static int getRetour(){
return retour;
}
 
 
public boolean executeInsert(String query) {
try {
return smt.execute(query);
} catch (SQLException e) {
System.err.println(query);
e.printStackTrace();
return false;
}
}
 
public int executeUpdate(String query) {
try {
return smt.executeUpdate(query);
} catch (SQLException e) {
e.printStackTrace();
System.err.println(e.getSQLState());
System.err.println(e.getMessage());
return -1;
}
}
 
public ResultSet executeSelect(String query) {
try {
return smt.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
 
public void printResultSet(ResultSet r) {
try {
r.beforeFirst();
ResultSetMetaData meta = r.getMetaData();
int nbCol = meta.getColumnCount();
for (int i = 1; i < nbCol + 1; ++i) {
if (i > 1)
System.out.print(", ");
System.out.print(meta.getColumnLabel(i));
}
System.out.println("");
while (r.next()) {
for (int i = 1; i < nbCol + 1; ++i) {
if (i > 1)
System.out.print(", ");
System.out.print(r.getString(i));
}
System.out.println("");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public ResultSet executeSelect1(String query) {
try {
return smt.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
 
public void printResultSet1(ResultSet r) {
try {
r.beforeFirst();
ResultSetMetaData meta = r.getMetaData();
int nbCol = meta.getColumnCount();
for (int i = 1; i < nbCol + 1; ++i) {
if (i > 1)
System.out.print(", ");
System.out.print(meta.getColumnLabel(i));
}
System.out.println("");
while (r.next()) {
for (int i = 1; i < nbCol + 1; ++i) {
if (i > 1)
System.out.print(", ");
System.out.print(r.getString(i));
}
System.out.println("");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
 
public List<String> getSColumnFromResultSet(ResultSet r, String col) {
List<String> l = new ArrayList<String>();
try {
r.beforeFirst();
while (r.next())
l.add(r.getString(col));
}
catch (SQLException e) {
e.printStackTrace();
}
return (l);
}
}

j'ai une autre classe AskAlbumPanel qui crée une fenêtre pour la demande du nom de l'album :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package ImagesBrowser;
 
import java.sql.Statement;
 
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
 
 
public class AskAlbumNamePanel extends JFrame implements ActionListener{
private static final long serialVersionUID = 2763707468537479660L;
private JButton boutonEnvoyer = new JButton("Envoyer");
private JTextField NomAlbum = new JTextField();
private JLabel EntrerNomAlbum = new JLabel("Entrer le nom de l'album :");
private int largeur =400;
private int hauteur = 200;
private Connexion execute = null;
public Statement stm = null;
 
 
public AskAlbumNamePanel(){
setTitle("Nom de l'Album");
setSize(largeur,hauteur);
JPanel p = new JPanel();
JPanel p1 = new JPanel();
p1.setBorder(BorderFactory.createEmptyBorder(10,0,30,0));
JPanel p2 = new JPanel();
p.setLayout(new BorderLayout());
p.add(NomAlbum,BorderLayout.CENTER);
p.add(EntrerNomAlbum,BorderLayout.WEST);
p.add(p1,BorderLayout.NORTH);
p.add(p2,BorderLayout.SOUTH);
JPanel pSud=new JPanel();
p2.setBorder(BorderFactory.createEmptyBorder(10,0,40,0));
pSud.add(p2,BorderLayout.NORTH);
pSud.add(boutonEnvoyer,BorderLayout.SOUTH);
p.add(pSud,BorderLayout.SOUTH);
 
boutonEnvoyer.addActionListener(this);
 
Container contentPane = getContentPane();
contentPane.add(p);
setResizable(false);
setVisible(true);
setLocationRelativeTo(null);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
 
public void actionPerformed(ActionEvent actionEvent) {
if (actionEvent.getSource() == boutonEnvoyer) {
final String albumName = NomAlbum.getText();
if (albumName.length()==0){
System.out.println("Pas de texte");
setTitle("Erreur : Entrer un nom d'album !");
 
}
else{
System.out.println(albumName);
getTexte(albumName);
String queryString = "INSERT INTO `Album` VALUES (NULL,`albumName`)";
execute.executeInsert(queryString);
setTitle("Nom de l'album envoyer !");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setTitle("Chargement ");
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setTitle("Chargement . ");
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setTitle("Chargement . . ");
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setTitle("Chargement . . . ");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dispose();
}
 
}
}
 
public String getTexte(String Texte){
return Texte;
}
 
}
Le problème c'est lorsque j'essaie d'envoyer le nom de l'album à partir de JTextField, on obtiens cette erreur :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ImagesBrowser.AskAlbumNamePanel.actionPerformed(AskAlbumNamePanel.java:70)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Pouvez vous m'éclaircir sur ce problème ?