Avatar billede langkiller Nybegynder
10. september 2012 - 22:52 Der er 13 kommentarer og
1 løsning

MySQL java connection - kan ikke oprette forbindelse

Er igang med at forbinde java til en MySQL database for første gang og støtte ind i lidt problemer. Har installeret xampp som jeg ofte bruger sammen med php, hvilket virker helt fint. Har også importeret de nødvendige klasser. Har følgende kode:

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


public class Main {

    public static void main(String[] args) throws Exception
    {
        Class.forName("com.mysql.jdbc.Driver");
       
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb","root","root");
       
        PreparedStatement statement = con.prepareStatement("select * from name");
       
        ResultSet result = statement.executeQuery();
       
        while(result.next()) {
            System.out.println(result.getString(1) + " " + result.getString(2));
        }
    }
}




Får følgende fejl i konsollen:
Exception in thread "main" java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Main.main(Main.java:13)


Jeg bruger eclipse forresten, hvis det skulle have nogen betydning.
Avatar billede arne_v Ekspert
10. september 2012 - 23:30 #1
Det er et adgangs problem.

Er password ogsaa root??

Hvordan ser din connect i PHP ud?
Avatar billede langkiller Nybegynder
10. september 2012 - 23:39 #2
ja det var også det jeg havde googlet mig frem til..
hmm jeg har ikke sat noget password

I php plejer jeg at bruge følgende:
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";

Så jeg skal måske droppe den ene root i min java connection?
Avatar billede arne_v Ekspert
10. september 2012 - 23:42 #3
Ja.

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb","root","");
Avatar billede langkiller Nybegynder
10. september 2012 - 23:46 #4
bum bum.. jeg får nu noget helt andet:


Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'testdb.name' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2318)
    at Main.main(Main.java:17)
Avatar billede langkiller Nybegynder
10. september 2012 - 23:48 #5
ved ikke hvorfor den siger:  Table 'testdb.name' doesn't exist
.. det gør den!

Kan det være placeringen af mit eclipse workspace der gør det?
Måske den på en eller anden måde skal ligge i root mappen (htdocs)
Avatar billede arne_v Ekspert
10. september 2012 - 23:53 #6
du har angivet databasenavn testdb i connection url

du laver:

"select * from name"

og MySQL fortaeller dig at den tabel ikke eksisterer
Avatar billede arne_v Ekspert
10. september 2012 - 23:54 #7
og det har intet med Eclipse at goere
Avatar billede langkiller Nybegynder
10. september 2012 - 23:58 #8
nåååå det var tabellen den ikke kunne finde. troede det var databasenavnet den var galt med :b
men du havde helt ret, jeg havde kaldt den "names" og ikke "name" :)

det fungerer perfekt nu, så jeg siger mange tak for hjælpen. Du smider bare et svar hvis du vil have points
Avatar billede arne_v Ekspert
11. september 2012 - 00:03 #9
svar
Avatar billede arne_v Ekspert
11. september 2012 - 00:03 #10
Husk og close din connection!
Avatar billede langkiller Nybegynder
11. september 2012 - 00:06 #11
hvordan gør man det? :) og skal man så åbne og lukke for hvert nye kald til db?
Avatar billede arne_v Ekspert
11. september 2012 - 00:26 #12
con.close();
Avatar billede arne_v Ekspert
11. september 2012 - 00:27 #13
Du kan godt bruge den samme connection til flere SQL saetninger, men hvis du ikke skal bruge den et stykke tid boer du lukke og connecte igen.
Avatar billede arne_v Ekspert
11. september 2012 - 00:27 #14
Hvis du bruger connection pool kan du aabne og lukke hele tiden.
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