Avatar billede zitzo Nybegynder
14. juni 2005 - 09:57 Der er 8 kommentarer

JTextArea fejl ved SQL ConnectionException

Jeg oplever nogen underlige fejl når mit program forsøger at få fat i SQL serveren og fejler. Programmet forsøger at lave et simpelt query, alt efter hvad der sker efterfølgende skriver den i et JTextArea om det er gået godt eller dårligt. Når forbindelsesforøget fejler kommer der en java.net.ConnectException Connection timed out. Men når jeg skriver til JTextArea'et lige efter fejlen bliver det nærmest nulstillet, altså den bliver tegnet x=0, y=0 og fylder hele JFrame'n. Jeg har forsøgt at lave en lap ved at kalde paint lige efter... men det holder ikke syndes jeg...det er utilregneligt.

Da SQLquerys tager lidt tid har jeg lavet en seperat tråd til sql methoderne, jeg startede med at skrive til JTextArea'et fra tråden altså fx. mainWindow.taSQLResult.setText("blabla"); jeg har siden forsøgt at skrive til JTextArea'et fra mainWindow selv men det gav samme resultat.

Er der nogen der har oplevet noget lignene?

Lidt kode...
Fra mainWindow:
boolean dbAlive = sql.dbConTest();
if(dbAlive){
  taSQLResult.setForeground(new Color(0,255,0));
  taSQLResult.setText("Der er forbindelse til databasen");
  //paint(gI);
}else{
  taSQLResult.setForeground(new Color(255,0,0));
  taSQLResult.setText("Der er problem databaseforbindelsen.\nTjek om perfectTesteren er tændt.");
  //paint(gI);
}

Fra sqltråden:
public static boolean dbConTest(){
  Connection con;
  Statement st;
       
  String url = "jdbc:mysql://localhost/Db";
  try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    con = DriverManager.getConnection(url,"root","");
    st = con.createStatement();
    ResultSet rs = st.executeQuery("SELECT file_name FROM board_info");
    st.close();
    con.close();
    return true;
  }catch(Exception e) {
    System.out.println(e.getMessage());
    return false;
  }   
}


PS. jeg opretter JTextArea'et som alle andre JTextAreas i programmet og de andre virker fint... har dog ikke prøvet at skrive til dem lige efter den exception der... det vil jeg lige prøve for the kicks :)
Avatar billede zitzo Nybegynder
14. juni 2005 - 10:04 #1
Jeg har så lige fundet ud af fejlen opstår for det specifikke JTextArea ligemeget hvilket andet TextArea jeg skriver til efter exception'en... det er godt nok underligt
Avatar billede zitzo Nybegynder
14. juni 2005 - 10:07 #2
Endnu et lile hint det sker ved det komponent der sidst er blevet add'et til containeren med alle komponenterne, i constructoren.
Avatar billede zitzo Nybegynder
14. juni 2005 - 10:26 #3
Nu har jeg prøvet med at add'e et par forkellige komponeneter til sidst og den slå ikke fejl... det sidste komponent bliver maxet ud i min JFrame hvis jeg skriver til et JTextArea mens jeg udfører ovenstående dbConTest()
Avatar billede jakoba Nybegynder
14. juni 2005 - 11:50 #4
teori:
    Id connect udføres som del af en constructor. idet connect fejler går programudførelsen gud ved hvor mange levels tilbage og det objekt bliver aldrig oprettet.

løsning
    try-catch onkring connect sætningen der håndterer fejlen og gør noget fornuftigt.
Avatar billede zitzo Nybegynder
14. juni 2005 - 12:49 #5
ok jeg vil prøve at bygge noget rundt om connect...

jeg har dog også forsøgt at fyrer  sql.dbConTest(); af i mainWindows main, med samme resultat... ved ikke om det laver huller i din teori... håber jeg ikke :)
Avatar billede zitzo Nybegynder
14. juni 2005 - 12:57 #6
Jeg må desværre også meddele at den laver den fejl selv om den godt få fat i databasen... jeg har ikke set det før nu da det er så utilregneligt...

min løsningpå det på nuværende tidspunkt er at kale paint 5 -6 gange lige efter hinanden i bunden af min constructor... jeg får kuldegysninger vær gang jeg scroller hen over den stump kode :p... og nogengange er selv det ikke tilstrækkeligt...
Avatar billede zitzo Nybegynder
14. juni 2005 - 13:01 #7
jeg har dog fastslået det er når jeg kalder
con = DriverManager.getConnection(url,"root",""); at fejlen sker
Avatar billede zitzo Nybegynder
14. juni 2005 - 13:53 #8
hmm nå men jeg har smidt en thread.sleep(10) efter sql.dbConTest og derefter en paint... det ser ud til at være godt nok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester