Avatar billede chr_juel Nybegynder
24. november 2005 - 13:38 Der er 9 kommentarer og
1 løsning

to databaseforbindelser i en string?

Hejsa.

Jeg har et problem angående forbindelse til to databaser i java.
Jeg har to databaser, hvor jeg han anført forbindelsen til dem her:

(DriverManager.getConnection("jdbc:mysql://localhost/sms","root","")
(DriverManager.getConnection("jdbc:mysql://localhost/ordre","root","")

Problemet er så, at jeg kun vil nøjes med en klasse til databaseforbindelsen, oprettelse af tabeller og sådan, men kan ikke få skrevet stien ind i en String. Meningen er at når jeg opretter DbConn i en anden klasse at jeg gør således i constructoren:

db = new DbConn("sms");
eller
db = new DbConn("ordre");
alt afhængigt af hvilke database jeg skal have forbindelse til.

Jeg har prøvet følgende, men jeg kan ikke få det til at virke.

public DbConn(String adrvar)           
{
adresse = "jdbc:mysql://127.0.0.1/adrvar","root","";
       
}

Håber i kan hjælpe.

Mvh Christian
Avatar billede tripwire Nybegynder
24. november 2005 - 14:13 #1
public DbConn(String adrvar)           
{
adresse = "jdbc:mysql://127.0.0.1/"+adrvar"+","root","";
       
}
Avatar billede tripwire Nybegynder
24. november 2005 - 14:21 #2
hov, det gik vist lidt hurtigt

Se mit test program:

class test
{
    public static void main(String [] arguments)
    {
        new test();
    }

    test()
    {
        DbConn("sms");
    }

    String adresse;

    public void DbConn(String adrvar)
    {
        adresse = "jdbc:mysql://127.0.0.1/"+adrvar+""+", root";

        System.out.println(adresse);
    }

}
Avatar billede chr_juel Nybegynder
24. november 2005 - 14:22 #3
Tak for svaret, men det virker stadig ikke.

Jeg har prøvet at flytte rundt på det ene og det andet for at få det til at virke, men det duer bare ikke..
Avatar billede chr_juel Nybegynder
24. november 2005 - 14:32 #4
Det ser bedre ud, men det virker stadig ikke, den brokker sig vidst over adgangskoden ikke er der. Altså "", da jeg ikke har nogen adgangskode..
Avatar billede chr_juel Nybegynder
24. november 2005 - 15:57 #5
Jeg bruger eclipse og får følgende fejl:

java.sql.SQLException: Unknown database 'sms-ordre,root,'
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3647)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1176)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:193)
    at sms.DbConn.makeConn(DbConn.java:37)
    at sms.Plukning.plukkeliste(Plukning.java:26)
    at sms.Plukning.<init>(Plukning.java:18)
    at sms.Plukning.main(Plukning.java:47)
Exception in thread "main" java.lang.NullPointerException
    at sms.Plukning.plukkeliste(Plukning.java:29)
    at sms.Plukning.<init>(Plukning.java:18)
    at sms.Plukning.main(Plukning.java:47)
Avatar billede tripwire Nybegynder
24. november 2005 - 18:34 #6
Det er nok nemmest at gemme databasenavn og bruger i hver sin variable og så bare bruge dem i sin connection string.. noget i denne stil:


import java.sql.*;

class test
{
    public static void main(String [] arguments)
    {
        new test();
    }

    test()
    {
        MakeDbConn("sms","root");
    }

    Connection con;
    String database;
    String bruger;

    public void MakeDbConn(String d, String b)
    {
        this.database = d;
        this.bruger = b;

        try
        {
            con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/"+database, bruger, "");
        }
        catch(Exception e)
        {
        }
    }
}
Avatar billede tripwire Nybegynder
24. november 2005 - 18:38 #7
På denne måde burde du undgå den fejl du får, hvor den tror root er en del af database navnet
Avatar billede chr_juel Nybegynder
24. november 2005 - 22:02 #8
Jeg fandt selv ud af det på følgende måde:

adresse = "jdbc:mysql://127.0.0.1/"+adrvar;

og

conn = DriverManager.getConnection(adresse, "root", "");

Men tak for hjælpen og du får lige en stak point.
Avatar billede tripwire Nybegynder
25. november 2005 - 08:41 #9
Jamen, tak for det.. =)

Det var jo næsten samme løsning vi fandt ud af.. Hvis du nogensinde vil ændre brugeren, så burde mit virke.. men har ikke testet det.. har ikke lige mysql kørende pt.. men jeg er glad for at du kom videre...
Avatar billede chr_juel Nybegynder
25. november 2005 - 10:28 #10
Ja det er næsten den samme løsning, og jeg vil bruge det hvis det bliver nødvendigt, men nu må vi se. Med din løsning kan jeg jo også ændre adgangskoden på samme måde, så det er perfekt.

Tak igen og hej hej!
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