R
rush2rio
Ambitioniertes Mitglied
- 2
Hallo,
ich versuche über einen AsyncTask eine Verbindung zu meiner Postgresql Datenbank herzustellen und ein SQL Statement abzuschicken.
Funktioniert soweit auch wunderbar. Allerdings nur wenn ich die richtigen Verbindungseinstellungen (also host, database, user, pw,) bereits in den Code schreibe. Wenn ich die Activity ohne den korrekten Werten starte stürzt sie sofort ab.(siehe LogCat) Ich benötige jedoch die Möglichkeit das der Anwender die Verbindungseinstellungen manuell eintragen kann. d.h. das der Anwender einen Toast bekommt in dem er mitgeteilt bekommt das die Einstellungen nicht stimmen und er sie in der EinstellungsActivity ändert (und in SharedPreferences speichert).
Problem liegt wohl irgendwie bei Drivermanager.getConnection(url, pg_user, pg_pw);
Was mache ich falsch bzw hat einer eine Idee wie ich das machen könnte?
Vielen Dank
LogCat
ich versuche über einen AsyncTask eine Verbindung zu meiner Postgresql Datenbank herzustellen und ein SQL Statement abzuschicken.
Funktioniert soweit auch wunderbar. Allerdings nur wenn ich die richtigen Verbindungseinstellungen (also host, database, user, pw,) bereits in den Code schreibe. Wenn ich die Activity ohne den korrekten Werten starte stürzt sie sofort ab.(siehe LogCat) Ich benötige jedoch die Möglichkeit das der Anwender die Verbindungseinstellungen manuell eintragen kann. d.h. das der Anwender einen Toast bekommt in dem er mitgeteilt bekommt das die Einstellungen nicht stimmen und er sie in der EinstellungsActivity ändert (und in SharedPreferences speichert).
Problem liegt wohl irgendwie bei Drivermanager.getConnection(url, pg_user, pg_pw);
Was mache ich falsch bzw hat einer eine Idee wie ich das machen könnte?
Vielen Dank
Code:
1 protected void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.main);
4
5 getPrefs();
6 .
7 .
8 .
9 new FetchSQL().execute();
10 }
11
12 public void getPrefs() {
13 SharedPreferences prefs = PreferenceManager
14 .getDefaultSharedPreferences(this);
15
16 pg_host = prefs.getString("host", "");
17 pg_port = prefs.getString("port", "");
18 pg_database = prefs.getString("database", "");
19 pg_user = prefs.getString("user", "");
20 pg_pw = prefs.getString("password", "");
21 }
22
23
24 private class FetchSQL extends AsyncTask<Void,Void,String> {
25
26 @Override
27 protected String doInBackground(Void... params) {
28 String retval="";
29 try {
30 Class.forName("org.postgresql.Driver");
31 } catch (ClassNotFoundException e) {
32 e.printStackTrace();
33 retval = e.toString();
34 Toast.makeText(MainActivity.this,e.toString(), Toast.LENGTH_LONG).show();
35 }
36 String url = "jdbc:postgresql://"+pg_host+":"+pg_port+"/"+pg_database+"";
37 Connection conn;
38 try {
39 DriverManager.setLoginTimeout(5);
40 conn = DriverManager.getConnection(url, pg_user, pg_pw);
41 Statement st = conn.createStatement();
42 String sql;
43 sql = //SQL ABFRAGE
44 ResultSet rs = st.executeQuery(sql);
45 while(rs.next()) {
46
47 //var .. = rs.getString("...");
48 }
49 rs.close();
50 st.close();
51 conn.close();
52 }
53 catch (SQLException e) {
54 e.printStackTrace();
55 retval = e.toString();
56 Toast.makeText(MainActivity.this,e.toString(), Toast.LENGTH_LONG).show();
57 }
58 return retval;
59
60 }
61
62 @Override
63 protected void onPostExecute(String value) {
64 //Daten aus SQL Abfrage in TextView anzeigen
65 }
LogCat
Code:
102-14 12:21:18.707: W/System.err(2128): java.sql.SQLException: No suitable driver
202-14 12:21:18.767: W/System.err(2128): at java.sql.DriverManager.getConnection(DriverManager.java:182)
302-14 12:21:18.877: W/System.err(2128): at java.sql.DriverManager.getConnection(DriverManager.java:209)
402-14 12:21:18.928: W/System.err(2128): at .MainActivity$FetchSQL.doInBackground(MainActivity.java:318)
502-14 12:21:18.987: W/System.err(2128): at MainActivity$FetchSQL.doInBackground(MainActivity.java:1)
602-14 12:21:19.047: W/System.err(2128): at android.os.AsyncTask$2.call(AsyncTask.java:287)
702-14 12:21:19.099: W/System.err(2128): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
802-14 12:21:19.157: W/System.err(2128): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
902-14 12:21:19.217: W/System.err(2128): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
1002-14 12:21:19.267: W/System.err(2128): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
1102-14 12:21:19.437: W/System.err(2128): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
1202-14 12:21:19.467: W/System.err(2128): at java.lang.Thread.run(Thread.java:856)
Zuletzt bearbeitet: