[Java-JDBC] problem z polaczniem

0

Witam,

środowisko: NetBeans,
system: Linux (OpenSuse)

mam sobie taki kawałek kodu - output:
Connection conn = null;
String url = "jdbc//localhost:3306/";
String dbName = "car_databases";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String UserPassword = "mrrr";

    try {
            Class.forName(driver).newInstance();
    }catch(Exception e) {
            System.err.println("Blad wczytywania sterownika");
    }
    try{
            conn = DriverManager.getConnection(url+dbName,userName,UserPassword);
            System.out.println("Connected to the database");
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("SELECT * FROM CAR");
            while (rs.next()) {
                    System.out.println(rs.getString(1) + " " + rs.getString(2));
            }
            conn.close();

       }catch(Exception e) {
            e.printStackTrace();
    }

debug -output:
Blad wczytywania sterownika
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/car_databases
        at java.sql.DriverManager.getConnection(DriverManager.java:640)
        at java.sql.DriverManager.getConnection(DriverManager.java:200)
        at simplyapp_wsinf_databases.SimplyApp_WSINF_databasesView.logon(SimplyApp_WSINF_databasesView.java:245)
        at simplyapp_wsinf_databases.SimplyApp_WSINF_databasesView.jButton1ActionPerformed(SimplyApp_WSINF_databasesView.java:229)
        at simplyapp_wsinf_databases.SimplyApp_WSINF_databasesView.access$800(SimplyApp_WSINF_databasesView.java:29)
        at simplyapp_wsinf_databases.SimplyApp_WSINF_databasesView$4.actionPerformed(SimplyApp_WSINF_databasesView.java:141)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
        at java.awt.Component.processMouseEvent(Component.java:6108)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:5873)
        at java.awt.Container.processEvent(Container.java:2105)
        at java.awt.Component.dispatchEventImpl(Component.java:4469)
        at java.awt.Container.dispatchEventImpl(Container.java:2163)
        at java.awt.Component.dispatchEvent(Component.java:4295)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
        at java.awt.Container.dispatchEventImpl(Container.java:2149)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4295)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
BUILD SUCCESSFUL (total time: 9 seconds)


Jak widać nie mogę załadować sterownika JDBC pytanie czemu? Co dziwniejsze w zakładce 'Services' (ctrl+5) połączenie 'wykonuje' się bez najmniejszego problemu. Prosiłbym o jakiekolwiek wskazówki. Wujek google podpowiadał o zmiennej %path%  aczkolwiek odnosiło się to do Windowsa (którego nie posiadam i nie mogę przetestować).

pozdrawiam.
0

Dodaj sterownik do bibliotek projektu. Bez tego nie pójdzie, to że Ci Services się łączy nie ma znaczenia.

0

Witam,
dzięki za odpowiedź. W programie mam już następujące import'y:

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

chyba, że źle rozumuje 'dodanie sterownika do biblioteki projektu'.
Wzorowałem sie na:
http://www.jdbc-tutorial.com/

0

Ok'a, pogrzebałem, pogrzebałem i znalazłem .. Dziękuje za wskazówkę

0

Witam

Podepnę się pod temat ;-)
W jaki sposób wywołać proste zapytanie?
Zmodyfikowany kod poniżej, niestety nie działa.


package oracle1;

/**
 *
 * @author val
 */
import java.sql.*;
public class Baza {
    void polaczenie_z_baza() throws SQLException {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                System.out.println("Połączyłeś się z bazą");
            } catch (Exception e) {
                System.out.println("Nie połączyłeś się z bazą");
            }
            Connection polaczenie=DriverManager.getConnection
                    ("jdbc:oracle:thin:@127.0.0.1:8080:xe","sys","oracle");
            Statement stmt = polaczenie.createStatement();
            ResultSet rs;
            rs = stmt.executeQuery("Select * from hr.employees");
            System.out.println("Polecenie: " + rs);
            polaczenie.close();
        }

} 

i wywołanie

package oracle1;

/**
 *
 * @author val
 */
import java.sql.*;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        // TODO code application logic here
                Baza b=new Baza();
        try {
                b.polaczenie_z_baza();
        } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }
} 

i wynik uruchomienia

run:
Połączyłeś się z bazą
java.sql.SQLException: Io exception: Got minus one from a read call
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:147)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:257)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:389)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:454)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:802)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at oracle1.Baza.polaczenie_z_baza(Baza.java:21)
        at oracle1.Main.main(Main.java:22)
BUILD SUCCESSFUL (total time: 14 seconds)
 

Pozdrawiam

0

Witam

Drugi tutorial i też nie mogę się podłączyć.

package oracle1;

/**
 *
 * @author val
 */
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCDriverInformation {
	static String userid="sys", password = "oracle";
	static String url = "jdbc:oracle:thin:@127.0.0.1:8080:XE";

	static Connection con = null;
	public static void main(String[] args) throws Exception {
	    Connection con = getOracleJDBCConnection();
	    if(con!= null){
	       System.out.println("Got Connection.");
	       DatabaseMetaData meta = con.getMetaData();
	       System.out.println("Driver Name : "+meta.getDriverName());
	       System.out.println("Driver Version : "+meta.getDriverVersion());

	    }else{
		    System.out.println("Could not Get Connection");
	    }
	}

	public static Connection getOracleJDBCConnection(){

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

		} catch(java.lang.ClassNotFoundException e) {
			System.err.print("ClassNotFoundException: ");
			System.err.println(e.getMessage());
		}

		try {
		   con = DriverManager.getConnection(url, userid, password);
		} catch(SQLException ex) {
			System.err.println("SQLException: " + ex.getMessage());
		}

		return con;
	}

}
 

Wynik:

run:
SQLException: Io exception: Got minus one from a read call
Could not Get Connection
BUILD SUCCESSFUL (total time: 6 seconds)

Może coś jest nie tak z tą bazą? Ewentualnie ze sterownikiem jdbc?

0

Witam

Działa, podawałem błędny port 8080, oto część pliku tnsnames.ora:

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = comp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

i klasy:

import java.sql.*;
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        // TODO code application logic here
                Baza b=new Baza();
                JDBCDriverInformation d = new JDBCDriverInformation();
        try {
                b.polaczenie_z_baza();
        } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }
}
 
 
import java.sql.*;
public class Baza {
    void polaczenie_z_baza() throws SQLException {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                System.out.println("Połączyłeś się z bazą");
            } catch (Exception e) {
                System.out.println("Nie połączyłeś się z bazą");
            }
            //System.out.println("przed Connection");
            Connection polaczenie=DriverManager.getConnection
                    ("jdbc:oracle:thin:@127.0.0.1:1521:xe","hr","oracle");
            //System.out.println("po Connection");
            Statement stmt = polaczenie.createStatement();
            ResultSet rs;
            rs = stmt.executeQuery("Select * from hr.employees");
                while(rs.next()){
                    System.out.println("results: " + rs.getString(1) + " " + rs.getString(2));
                }
            //System.out.println("Polecenie: " + rs);
            polaczenie.close();
        }

}

Wywołanie

run:
Połączyłeś się z bazą
results: 100 Steven
results: 101 Neena
results: 102 Lex
results: 103 Alexander
 

Może komuś ułatwi start z jdbc ;-)

Pozdrawiam

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