# Datenbank und Netbeans



## skipjip (14. Jan 2009)

Hallo,

ich würde gerne mit meinem Java Prog auf ne Sqllite datenbank zugreifen hab den code im VI geschrieben ist kein Problem funktioniert wunderbar!

Dann wollte ich das Prog in Netbeans ausführen da funktioniert es nicht mehr muss ich da was anders machen? Wie macht ihr das mit der Verwaltung in welchen Ordner macht Ihr die DB und in welchen den Code? 

Hier mal der Code! 


```
import java.sql.*;

public class Test {

  public static void main (String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn = DriverManager.getConnection("jdbc:sqlite:mybrief_devel.db");
    Statement stat = conn.createStatement();
    ResultSet rs = stat.executeQuery("SELECT * FROM users;");
    while(rs.next()) {
      System.out.println("Vorname = " + rs.getString("firstname"));
      System.out.println("Nachname =" + rs.getString("lastname"));
    }
    rs.close();
    conn.close();
  }
}
```

Vielen Dank 

Mfg 

skipjip


----------



## L-ectron-X (14. Jan 2009)

Hast du NetBeans den DB-Treiber für die Datenbank im Libary Manager bekannt gemacht?


----------



## skipjip (14. Jan 2009)

ja hab ich! 

Wenn ich das mach sagt Netbeans das die Table users nicht existiert


----------



## L-ectron-X (14. Jan 2009)

Ich habe den Eindruck, dass wir jetzt aneinander vorbei reden.
Wenn du in NetBeans im Dateimenü mal auf _Tools -> Libaries_ klickst, öffnet sich der Libary Manager.
Hast du in der linken Seite unter _Libaries:_ den Eintrag für den Treiber drin?

Wenn ja, hast du nach Anklicken des Eintrags auf der linken Seite danach auf der rechten Seite den Pfad zur Treiber-JAR-Datei sichtbar?

Wenn nicht, musst du den Treiber in den Libary Manager eintragen.


----------



## skipjip (14. Jan 2009)

Hab den Eintrag im Library Manger hinzugefügt! Was muss ich als nächstes machen bis jetzt hat das noch nichts geändert!
Die Fehler Meldung bekomm ich von Netbeans!
run:
Exception in thread "main" java.sql.SQLException: no such table: users
        at org.sqlite.DB.throwex(DB.java:288)
        at org.sqlite.NativeDB.prepare(Native Method)
        at org.sqlite.DB.prepare(DB.java:114)
        at org.sqlite.Stmt.executeQuery(Stmt.java:89)
        at test.Test.main(Test.java:11)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)


----------



## L-ectron-X (14. Jan 2009)

Sicher, dass die DB-Tabelle existiert?

Den SQL-Befehl _SELECT * FROM users;_ würde ich auch ohne abschließendes Semikolon schreiben.


----------



## skipjip (14. Jan 2009)

wenn ich den code so wie er ist im Terminal ausführe funktioniert es ohne Probleme. Nur mit NetBeans funktioniert es nicht!

Hab die DB im selben Ordner wie den Code muss ich da was ändern bei NetBeans?


----------



## L-ectron-X (14. Jan 2009)

Nein, nur den Treiber bekannt machen. DB (Server) muss laufen, der URL zur DB muss stimmen und die Tabelle muss existieren.

Wie genau startest du die Anwendung? Direkt in NetBeans? Oder anders?


----------



## skipjip (14. Jan 2009)

direkt in Netbeans


----------



## L-ectron-X (14. Jan 2009)

Hmm, hab ich erstmal keine Idee.
Müsste ich mal selbst ausprobieren.


----------



## skipjip (16. Jan 2009)

wie kann ich es machen das mir die JList Vor und Zunamen in einer Reihe ausgibt? 


```
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.util.*;

public class AdminTool {

  private Connection connection;
  private Statement statement;
  private ResultSet rs;
  private JList userList;
  private ArrayList<String> arrayList;
  private JLabel label;
  private DefaultListModel dlm;

  public AdminTool() {
    try {
      Class.forName("org.sqlite.JDBC");
    } catch (Exception e) {
      System.err.println("Unable to find and load driver");
      System.exit(1);
    }
  }
  
  public void loadAccount() {
    arrayList = new ArrayList<String>();
    try {
      rs = statement.executeQuery("SELECT * FROM users;");
      while (rs.next()) {
        arrayList.add(rs.getString("firstname"), rs.getString("lastname"));        
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public void buildGUI() {
    JFrame frame = new JFrame("");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel();
    loadAccount();
    dlm = new DefaultListModel();
    userList = new JList(dlm);
    for(int i = 0; i < arrayList.size(); i++) {
      dlm.addElement(arrayList.get(i));
    }
    userList.setVisibleRowCount(18);    
    panel.add(userList);
    frame.getContentPane().add(BorderLayout.WEST, panel);
    frame.setSize(300,300);
    frame.setVisible(true);
  }

  public void connectToDB() {
    try {
      connection = DriverManager.getConnection("jdbc:sqlite:mybrief_devel.db");
      statement = connection.createStatement();

    } catch (SQLException connectException) {
      System.out.println(connectException.getMessage());
      System.out.println(connectException.getSQLState());
      System.out.println(connectException.getErrorCode());
      System.exit(1);
    }
  }

  public static void main (String[] args) {
    AdminTool tool = new AdminTool();
    tool.connectToDB();
    tool.buildGUI();
  }
  

}
```


----------



## skipjip (16. Jan 2009)

okay hat sich erledigt!


----------

