Avatar billede mikmakmuk Nybegynder
10. november 2001 - 18:00 Der er 19 kommentarer og
1 løsning

Java og MySql

HJÆLP!!! Jeg forstår ikke hvad som går galt. Jeg har en klasse som ser således ud

import java.sql.*;


public class Databaseforbindelsemysql
{
    private Connection conn ;
    private Statement stmt;
       
    public Databaseforbindelsemysql(String data, String driver)
    {
       
        try
        {
            Class.forName(driver);
            conn = DriverManager.getConnection(data, \"\", \"\");
            stmt = conn.createStatement();
        }
        catch(Exception s)
        {
            System.out.println(\"SQL dataforbindelse fejlede\");
        }   
    }
   
    public ResultSet select(String sql)
    {
        ResultSet r = null;
        try
        {
            r = stmt.executeQuery(sql);
        }
        catch(SQLException s)
        {
            System.out.println(\"Select fejlede: \"+s);
        }       
        return r;
    }
   
    public void insertUpdate(String sql)
    {
        try
        {
            stmt.executeUpdate(sql);
        }
        catch(SQLException s)
        {
            System.out.println(\"update/insert fejlede\");
        }       
    }
   
    public void close()
    {
        try
        {
            stmt.close();
        }
        catch(SQLException s)
        {
            System.out.println(\"Close fejlede\");
        }
       
    }
}

som jeg kalder fra en anden klasse som ser således ud

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Opslagstavle extends HttpServlet
    {
     
        public void doGet (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
        PrintWriter        out;
       
        String baggrund;
        String tabelfarve;
               
        baggrund     = request.getParameter (\"tbfarve\");
        tabelfarve    = request.getParameter (\"tfarve\");             
       
       
          if(baggrund==null)
        {
            baggrund=\"ff0000\";
        }
       
        if(tabelfarve==null)
        {
            tabelfarve=\"ffffff\";
        }
       
        response.setContentType(\"text/html\");
           
        out = response.getWriter();
       
        Databaseforbindelsemysql d = new Databaseforbindelsemysql(\"jdbc:mysql:mikmak.dyndns.dk/web?user=mik&password=mik\",
                                                                  \"org.gjt.mm.mysql.Driver\");
       
     
        try {
           
            out.println(\"<HTML><HEAD><TITLE>\");
            out.println(\"</TITLE></HEAD><BODY \"+baggrund+\">\");
           
            out.println(\"<table width=\'860\'>\");
            out.println(\"<tr><td valign=\'top\'>\");
            out.println(\"<table border=\'1\' width=\'780\' cellspacing=\'0\' cellpadding=\'0\' \"+tabelfarve+\">\");
            out.println(\"<THEAD><TR><TH>Besked fra</TH><TH>Beskeden</TH></TR></THEAD>\");
           
            ResultSet rs = d.select(\"SELECT * FROM besked order by Id desc\");

           
            while(rs.next()) {
           
                           
                String navn = rs.getString(2);
                String besked = rs.getString(3);
                out.println(\"<TR><TD>\"+navn+\"</TD><TD>\"+besked+\"</TD></TR>\");
           
            }
            d.close();
            out.println(\"</table>\");
            out.println(\"</td><td valign=\'top\'>\");
            out.println(\"<table width=\'65\'>\");
            out.println(\"<FORM ACTION=\'Opslagstavle\' METHOD=\'GET\'\");
            out.println(\"<tr><td>\");
           
            out.println(\"<p align=\'center\'>\");
            out.println(\"Vælg\");
            out.println(\"<br>\");
            out.println(\"Baggrund\");
            out.println(\"<br>\");
            out.println(\"<SELECT NAME=\'tbfarve\' MULTIPLE SIZE=\'4\'>\");
            out.println(\"<OPTION VALUE= bgcolor=\'#ff0000\'>Rød\");
            out.println(\"<OPTION VALUE= bgcolor=\'#00ff00\'>Grøn\");
            out.println(\"<OPTION VALUE= bgcolor=\'#0000ff\'>Blå\");
            out.println(\"<OPTION VALUE= bgcolor=\'#ffffff\' selected>Hvid\");
            out.println(\"<OPTION VALUE= background=\'http://mikmak.dyndns.dk:8080/mik/jpg-filer/earth01.gif\'>Ani\");
            out.println(\"</SELECT>\");
           
            out.println(\"<br>\");
            out.println(\"Vælg\");
            out.println(\"<br>\");
            out.println(\"Tabelfarve\");
            out.println(\"<br>\");
            out.println(\"<SELECT NAME=\'tfarve\' MULTIPLE SIZE=\'4\'>\");
            out.println(\"<OPTION VALUE= bgcolor=\'#ff0000\'>Rød\");
            out.println(\"<OPTION VALUE= bgcolor=\'#00ff00\'>Grøn\");
            out.println(\"<OPTION VALUE= bgcolor=\'#0000ff\'>Blå\");
            out.println(\"<OPTION VALUE= bgcolor=\'#ffffff\' selected>Hvid\");
            out.println(\"</SELECT>\");
            out.println(\"</p>\");
           
            out.println(\"<br>\");
            out.println(\"<INPUT TYPE=\'submit\' VALUE=\'Opdater\'>\"); 
            out.println(\"</td></tr>\");
            out.println(\"</FORM></table>\");
           
            out.println(\"</td></tr>\");
            out.println(\"</td></tr>\");
            out.println(\"</table></BODY></HTML>\");
         
                     
            } catch (SQLException s) {
                out.println(\"<h3>SQL fejl: \" + s.toString() + \" \"
                + s.getErrorCode() + \" \" + s.getSQLState() + \"</h3>\");
        }
         
        out.close();
        }
       
//        public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
//        {
//        }
}

men forbindelsen bliver ikke oprettet. Er der noget galt med min kode, eller er det MySql som ikke er sat korrekt op
Avatar billede naish Nybegynder
10. november 2001 - 22:30 #1
ret:
();
       
        Databaseforbindelsemysql d = new Databaseforbindelsemysql(\"jdbc:mysql:mikmak.dyndns.dk/web?user=mik&password=mik\",
                                                                  \"org.gjt.mm.mysql.Driver\");


til

();
       
        Databaseforbindelsemysql d = new Databaseforbindelsemysql(\"jdbc:mysql://mikmak.dyndns.dk/web?user=mik&password=mik\", \"org.gjt.mm.mysql.Driver\");

Og hvis det ikke virker så overfør dit Username password til conn = DriverManager.getConnection(data, \"\", \"\");
Istedet for de to tomme strenge.

p.s. Lad være med at catch(Exception e) Du skal hellere specificere de exceptins du egentligt ønsker at fange.

p.s. V2, indsæt en e.printStackTrace() i din catch for at se hvad der gik galt.
Avatar billede naish Nybegynder
10. november 2001 - 22:31 #2
Eller kig på dette her som er min database handler klasse som med sikkerhed virker :)
public class DbHandler extends Object
{
   
    private Connection con=null;

    /** Creates new DataBase */
    public DbHandler()
    {
    }

    public boolean open(String dbDriverName, String dbClassName, String user, String pass)
    {           
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (InstantiationException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }
   
    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
    }
   
    public int doUpdate(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeUpdate(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return 0;
    }

    public ResultSet doQuery(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
                System.out.println(\"SQL Update = \"+(System.currentTimeMillis()-time)+\" ms  \"+sql);
                return stat.executeQuery(sql);       
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return null;
    }
}   

Og jeg kalder Open på følgende måde:
open(\"org.gjt.mm.mysql.Driver\",\"jdbc:mysql://localhost/DatabaseNavn\",\"username\",\"password\");

DatabaseNavn, Username, Password skal du sætte op


Avatar billede disky Nybegynder
10. november 2001 - 22:33 #3
Mikmakmuk:

Hov.

Jeg sidder på \'Naish\'es computer så de to svar der lige kom er faktisk skrevet af mig \'Disky\'.
Avatar billede naish Nybegynder
10. november 2001 - 22:35 #4
Og lige for at ingen påstår at \'Disky\' ikke sad på \'Naish\' pc\'er. Kommer her en underbygning :)

Så nu er det igen Disky under et forkert brugernavn.

Håber folk forstår :)

Mikmakmuk, held og lykke.

Hilsen Disky på Naish\'es computer
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:46 #5
Jeg sætter uendeligt meget pris på din hjælp
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:47 #6
det skal du bare vide
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:47 #7
Jeg prøver
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:48 #8
Hvis du har VNC kan du vise mig hvordan jeg skal gøre
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:55 #9
Jeg giver dig gerne fuld adgang til min computer
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:55 #10
Jeg kan ikke få det til at virke
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:59 #11
Jeg fatter det ikke ????????
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 22:59 #12
Det burde virke????
Avatar billede naish Nybegynder
10. november 2001 - 23:11 #13
Nu er Disky igen på Naish\'es computer
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 23:13 #14
Er det mig som er dum?
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 23:17 #15
adressen er i øvrigt http://mikmak.dyndns.dk:8080/mikk
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 23:17 #16
Det er gæstebogen som er problemet
Avatar billede naish Nybegynder
10. november 2001 - 23:27 #17
hvilken driver bruger du ?

Er din bruger oprettet i mysql databasen ?

Har du prøvet min klasse istedet ?

p.s. Jeg kan først kige igen i morgen, da jeg vil i seng.


Disky at Naish\'es computer går i seng :)
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 23:31 #18
cool
Avatar billede mikmakmuk Nybegynder
10. november 2001 - 23:32 #19
den hedder mm.mysql-2.0.4-bin
Avatar billede mikmakmuk Nybegynder
11. november 2001 - 08:58 #20
Jeg havde glemt //.
Jeg havde skrevet

jdbc:mysql:HOSTNAME/DIN_DATABASE\",\"BRUGERNAVN\",\"PASSWORD

Underligt det ikke virkede. LOL

Jeg giver pointene til Disky og siger endnu engang tak for hjælpen. Jeg vender sikkert tilbage med et nyt problem i den nærmeste fremtid. Hygge
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