Problem połączenie z bazą danych

0

Witam

Dopiero zaczynam się uczyć javy a wyapadło tak że muszę zrobić połączenie z bazą danych. Program działa do momentu wywołania zapytania Statment stm = polaczenie.createStatement(); i właśnie tutaj podświetla mi błąd przy zmiennej polaczenie nie rozumiem dlaczego w przykładach jakie widzialem w internecie.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package baza;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author Jacek
 */
public class Baza {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        try{
            String user="root";
            String pass="";
            String DB = "movies";
            Class.forName("com.mysql.jdbc.Driver");//instalujemy sterownik jdbc 
            String connectionUrl = "jdbc:mysql://localhost/";// wskazujemy adres bazy
                    
            Connection polaczenie = DriverManager.getConnection(connectionUrl+DB,user,pass);
        }catch (SQLException e){
            System.out.println("SQL Exception: "+ e.toString());
        }
        catch(ClassNotFoundException cE){
            System.out.println("Class not found exception : "+ cE.toString());
            
        }
        Statement stm = polaczenie.createStatment();
        ResultSet rs = stm.executeQuery("Select * from categories");
        
    }
}
0

Bo obiekt polaczenie tworzysz w bloku try, a potem próbujesz się odwołać do niego bo za blokiem.

0

Nawet jak zrobie to w oddzielnej funkcji w klasie Baza to nadal jest ten sam bład a podpowiedz z netbeansa brzmi cannot find symbol.

0
        Connection polaczenie = null;
        try{
            String user="root";
            String pass="";
            String DB = "movies";
            Class.forName("com.mysql.jdbc.Driver");//instalujemy sterownik jdbc
            String connectionUrl = "jdbc:mysql://localhost/";// wskazujemy adres bazy
                   
            polaczenie = DriverManager.getConnection(connectionUrl+DB,user,pass);
        }

Zmienną musisz zdefiniować przed blokiem try.
Wstawiaj kod w znaczniki < code=java>< /code> (bez spacji).

0
 package baza;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;

/**
 *
 * @author Jacek
 */
public class Baza {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //Connection polaczenie = null;
        try{
            String user="root";
            String pass="";
            String DB = "movies";
            Class.forName("com.mysql.jdbc.Driver");//instalujemy sterownik jdbc 
            String connectionUrl = "jdbc:mysql://localhost/";// wskazujemy adres bazy
                    
            Connection polaczenie = DriverManager.getConnection(connectionUrl+DB,user,pass);
            Statement stm = polaczenie.createStatement();
            ResultSet rs = stm.executeQuery("Select name  from movies ");
            while(rs.next()){
                String odp = rs.toString();
                System.out.println(odp);
            }
        }catch (SQLException e){
            System.out.println("SQL Exception: "+ e.toString());
        }
        catch(ClassNotFoundException cE){
            System.out.println("Class not found exception : "+ cE.toString());
            
        }       
    }     
    }

Wynikiem dzialania powinny byc nazwy nazwy 8 filmow z tabeli movies z bazy movies ale zamiast tego otrzymuje
run:
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
com.mysql.jdbc.JDBC4ResultSet@69e10f02
BUILD SUCCESSFUL (total time: 0 seconds)

Co mam zrobic aby otrzymywac nazwy filmów.

0
    String odp = rs.getString(1);
    //albo
    String odp = rs.getString("name");
    System.out.println(odp);
0

Żadna z twoich wskazówek nie działą niestety może to coś innego

0

Nie wierzę

while(rs.next()){
     String odp = rs.getString("name");
     System.out.println(odp);
}

Co się wyświetla?

0

Miałeś racje sposoby które podałeś były prawidłowe. Teraz mam kolejny projekt zrobiłęm prostą ramke z 3 przyciskami wyswietl dodaj usun, jak sama nazwa wskazuje mają one robić to co na nich pisze. Tak samo nazywają się funkcje które je obsługują. Zaznaczam że są one na etapie rozwojowym. Chodzi mi głownie o funkcje dodaj , mam tabele z 6 kolumnami pierwsza to id ustawiona na Auto increment i teraz moje pytanie dlaczego jak wysyłam zapytanie
stm.executeUpdate("INSERT INTO categories(id, name, locale, server, created, modified) VALUES ('1 ','horror3',1,1,'2012-10-10 ','2012-10-10 ')");
mogę tylko w ten sposób jeśli dam samo ' ' co powinno zadziałac wyskakuje błąd. I jeszcze jedno najpierw musze wywołać funkcje wyświetl żęby zadziałały pozostały obie inaczej (jeśli najpierw wywołąm tamte jest błąd lang.NullPointerException) a poniżej kod klasy zawierającej funkcje przepraszam za bałagan.

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package baza;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 *
 * @author Jacek
 */
public class Baza1 {
        Connection polaczenie = null;
        String imie;
       
            String user="root";
            String pass="";
            String DB = "movies";
            Statement stm = null;
            ResultSet rs=null;
            
            public void lacze(){
            try{
            Class.forName("com.mysql.jdbc.Driver");//instalujemy sterownik jdbc 
            }
            catch(Exception e){
                System.out.println("Bład łądowania sterownika");
                return;
            }
            
            Connection polaczenie = null;

            try{
            String connectionUrl = "jdbc:mysql://localhost/";// wskazujemy adres bazy
            polaczenie = DriverManager.getConnection(connectionUrl+DB,user,pass);
            stm = polaczenie.createStatement();
            }catch(Exception e){
                System.out.println("błąd połaczenia z baza");
            }

            }
            public void wyswietl(){
            try{
            rs = stm.executeQuery("Select name from categories ");
            while(rs.next()){
                imie = rs.getString(1);
                System.out.println("Twoje kategorie to :" + imie);
            }}catch(Exception e){
                System.err.println("błąd kurczę");
            }
            }
            public void dodaj(){
                try{
                 stm.executeUpdate("INSERT INTO `categories`(`id`, `name`, `locale`, `server`, `created`, `modified`) VALUES (' ','horror3',1,1,'2012-10-10 ','2012-10-10 ')");   
                 System.out.println("dodano kategorie");
                }
                catch(Exception e)
                {
                    System.out.println("Błąd oja"+e);
                }
            }
            public void usun(){
                try{
                 stm.executeUpdate("Delete from `categories` where id=1");   
                 System.out.println("usunieto kategorie");
                }
                catch(Exception e)
                {
                    System.out.println("Błąd oja"+e);
                }
            }
            }
            
0

OK ten problem mam rozwiazany.
Natomias pojawił się kolenjny tworze obiekt klasy JTextField pobieram z tego pola wpisane dane po przycisnieciu przycisku dodaj do zmiennej string za pomoca funkcji getText() , i chce tą zmienną wysłać w zapytaniu sql i tu moje pytanie jak sie to robi podobnie jak w php ?? przykłąd niżej

             public void dodaj( String arg){
                try{
                 stm.executeUpdate("INSERT INTO `categories`(`name`, `locale`, `server`, `created`, `modified`) VALUES ('"+arg+",1,1,'2012-10-10 ','2012-10-10 ')");   
                 System.out.println("dodano kategorie");
                }
                catch(Exception e)
                {
                    System.out.println("Błąd oja"+e);
                }
            }

Może to tak wyglądać ??

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