jList i mysql

0

Witam,

Próbuję wyświetlić w jList listę produktów z bazy, oto kod:


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
    ResultSet rs;
    String query = "SELECT name,description FrOM tblPizza";
    ArrayList<String> pizzaList = new ArrayList<String>();
    rs=pizza.Mysql.select(query);
    String fname;
    Vector v = new Vector(pizzaList);
    {
    try 
        {
            while (rs.next()) 
                {
                        String s = rs.getString("name");
                        String desc=rs.getString("description");
                        fname=s + "   " + desc;
                        v.addElement(fname);
                        area1.setText(v.toString());
                }
            mealList1.setListData(v);
        }
    catch (SQLException e) 
        {
       
        }
    mealList1.setListData(v);
    //contactList.repaint();
    
       }
}

Niestety, mimo pozycji w bazie i udanego połączenia, dostaję "NullPointerException
"
Jakaś porada? Co robię źle?

0

Źle zadajesz pytanie, który wiersz powoduje wyjątek ?
Do obiektu v klasy Vector dodajesz String, dlaczego tak dziwnie definiujesz i po co ci pizzalist ?

Vector<String> v=new Vector<String>();
0

Dzięki za szybką odpowiedź, problemem jest zwrócenie mi pustego ResultSet z metody wykonującej zapytanie:

 public  static ResultSet select(String aQuery)
        {
                String query = aQuery;

            try
                {
                
                    String driverName = "com.mysql.jdbc.Driver"; // MySQL JDBC driver
                    Class.forName(driverName);
                    Connection connection = DriverManager.getConnection(u);
                    sta = connection.createStatement();
                    results = sta.executeQuery(query);
                    return results;
                 }
        
                catch(Exception ex)
            {
                //outBox1.setText("Wystąpił błąd!" + ex.toString());
                //return false;
                    
            }         
                return results;
          }

Dlatego (chyba) wyjątek pojawia się przy próbie wykonania pętli while, poniżej poprawiona metoda...

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
    ResultSet rs;
    String query = "SELECT name,description FROM tblPizza ORDER BY name";
    ArrayList<String> pizzaList = new ArrayList<String>();
    String fname;
    Vector v = new Vector<String>();
    
    {
    try 
        {
        rs=pizza.Mysql.select(query);

        area1.setText("Database connected, results are:   "+rs);
            while (rs.next()) 
                {
      
                        String s = rs.getString("name");
                        String desc=rs.getString("description");
                        fname=s + "   " + desc;
                        v.addElement(fname);
                        area1.setText(fname);
    
                }
            mealList1.setListData(v);
        }
    catch (SQLException e) 
        {
       
        }
    mealList1.setListData(v);
    //contactList.repaint();
    
       }
}

0

Po mojemu masz bardzo złą organizację programu. Metoda select(query) ładuje sterownik, nawiązuje połączenie i zadaje pytanie, ale nie zamyka połączenia.
Powinno być inaczej, nawiązywanie połączenia i zadawanie pytania, to są dwie niezależne operacje.
-ładuję sterownik
-nawiązuje połączenie
-pytam
...
-pytam
zamykam połączenie
A co do błędu, to z twojego postu nie mogę wywnioskować czy nadal jest, czy też został naprawiony.

0

dodałem "sta.close();" na końcu bloku try połączenia (tuż przed return).

Błąd występuje nadal - wygląda na to, że mam zwrócony pusty ResultSet (choć to zapytanie w phpMyadmin zwraca kilka rezultatów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1