Bonjour,

J'ai un problème qui commence sérieusement à me...

J'espère que vous allez pouvoir m'aider !

En fait, je veux me connecter à une base de données postgres. Je met le .jar contenant les drivers et compagnie dans mon projet. Jusque là, ça va ! Ensuite, je créé ma classe pour me connecter à la BDD. Voici le code :

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
import java.sql.Connection;
import java.sql.DriverManager;
 
import android.content.Context;
import android.content.SharedPreferences;
 
public class AccesBDD {
 
	private Connection conn = null;
	private Context context;
 
	public AccesBDD(Context context) {
		this.context = context;
	}
 
	public boolean connection() {
		SharedPreferences prefs = context.getSharedPreferences("parametres",
				Context.MODE_PRIVATE);
 
		String adresse = prefs.getString("adresse", "").toString();
		String port = prefs.getString("port", "").toString();
		String name = prefs.getString("name", "").toString();
 
		String url = "jdbc:postgresql://" + adresse + ":" + port + "/" + name;
		String login = prefs.getString("login", "").toString();
		String password = prefs.getString("password", "").toString();
 
		try {
			Class.forName("org.postgresql.Driver");
			conn = DriverManager.getConnection(url, login, password);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
 
		return true;
	}
}

Et voilà comment je l'utilise dans mon Activity :

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
// Attribut de ma classe
private AccesBDD abdd; 
 
// Dans le onCreate
abdd = new AccesBDD(this); 
 
// Dans un méthode
if(!abdd.connection()){
			LayoutInflater inflater = getLayoutInflater();
			View v = inflater.inflate(R.layout.toast, (ViewGroup) findViewById(R.id.lil_toast));
			TextView tvToast = (TextView) v.findViewById(R.id.tv_toast);
			tvToast.setText(R.string.texte_toast_erreur_bdd);
			Toast toast = new Toast(this);
			toast.setView(v);
			toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL,
			        0, 0);
			toast.setDuration(Toast.LENGTH_LONG);
			toast.show();
		}
Voici le message d'erreur :

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
02-02 09:52:26.460: W/System.err(9439): org.postgresql.util.PSQLException: Quelque chose d'inhabituel a provoqué l'échec du pilote. Veuillez faire un rapport sur cette erreur.
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.Driver.connect(Driver.java:287)
02-02 09:52:26.460: W/System.err(9439): 	at java.sql.DriverManager.getConnection(DriverManager.java:180)
02-02 09:52:26.460: W/System.err(9439): 	at java.sql.DriverManager.getConnection(DriverManager.java:214)
02-02 09:52:26.460: W/System.err(9439): 	at com.consultation.AccesBDD.connection(AccesBDD.java:37)
02-02 09:52:26.460: W/System.err(9439): 	at com.consultation.ConsultationActivity.verifierConnexion(ConsultationActivity.java:184)
02-02 09:52:26.460: W/System.err(9439): 	at com.consultation.ConsultationActivity.onActivityResult(ConsultationActivity.java:175)
02-02 09:52:26.460: W/System.err(9439): 	at android.app.Activity.dispatchActivityResult(Activity.java:4581)
02-02 09:52:26.460: W/System.err(9439): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:2814)
02-02 09:52:26.460: W/System.err(9439): 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:2861)
02-02 09:52:26.460: W/System.err(9439): 	at android.app.ActivityThread.access$1000(ActivityThread.java:122)
02-02 09:52:26.460: W/System.err(9439): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
02-02 09:52:26.460: W/System.err(9439): 	at android.os.Handler.dispatchMessage(Handler.java:99)
02-02 09:52:26.460: W/System.err(9439): 	at android.os.Looper.loop(Looper.java:132)
02-02 09:52:26.460: W/System.err(9439): 	at android.app.ActivityThread.main(ActivityThread.java:4123)
02-02 09:52:26.460: W/System.err(9439): 	at java.lang.reflect.Method.invokeNative(Native Method)
02-02 09:52:26.460: W/System.err(9439): 	at java.lang.reflect.Method.invoke(Method.java:491)
02-02 09:52:26.460: W/System.err(9439): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
02-02 09:52:26.460: W/System.err(9439): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
02-02 09:52:26.460: W/System.err(9439): 	at dalvik.system.NativeStart.main(Native Method)
02-02 09:52:26.460: W/System.err(9439): Caused by: android.os.NetworkOnMainThreadException
02-02 09:52:26.460: W/System.err(9439): 	at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
02-02 09:52:26.460: W/System.err(9439): 	at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
02-02 09:52:26.460: W/System.err(9439): 	at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
02-02 09:52:26.460: W/System.err(9439): 	at java.net.InetAddress.getAllByName(InetAddress.java:249)
02-02 09:52:26.460: W/System.err(9439): 	at java.net.Socket.tryAllAddresses(Socket.java:126)
02-02 09:52:26.460: W/System.err(9439): 	at java.net.Socket.<init>(Socket.java:204)
02-02 09:52:26.460: W/System.err(9439): 	at java.net.Socket.<init>(Socket.java:171)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.core.PGStream.<init>(PGStream.java:62)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:32)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.Driver.makeConnection(Driver.java:393)
02-02 09:52:26.460: W/System.err(9439): 	at org.postgresql.Driver.connect(Driver.java:267)
02-02 09:52:26.460: W/System.err(9439): 	... 18 more

Le .jar que j'utilise est : postgresql-9.0-801.jdbc4.jar

Pour préciser, j'ai un autre programme où je fais la même chose et qui fonctionne. D'où le fait que ça m'énerve et que je ne comprend pas pourquoi ça ne marche pas.