Avatar billede bodhisatva Nybegynder
20. november 2001 - 11:24 Der er 12 kommentarer og
1 løsning

JSP og MySQL for dummies

Jah, vi starter hårdt ud c\",)
Setup:
1. Resin og MySQLadmin 1.3 kører i baggrunden.
2. Der er oprettet en MySQL-database med tabeller og andet nyttigt der er brug for. Der er endda indtastet testinfo i databasen vha. MySQL-Front, da jeg ikke fatter MySQL

Spm. går så på Driver:
1. Hvor finder jeg en driver??? Jeg har hørt at mm-driveren lavet af Mark Matthews skulle være den bedste, men hvordan bruger jeg den?
2. Hvordan bruger jeg den driver med Resin? Jeg har læst at Resin skal konfigureres med den driver man ønsker at bruge. Feel free to correct me if I\'m wrong.

Avatar billede disky Nybegynder
20. november 2001 - 11:26 #1
mysqladmin skal du ikke bruger til noget, mysql skal køre som en service (hvis det er windows)


1. du inkluderer .jar filen i din classpath
2. nej skal du ikke, du kan kalde den direkte fra java.
Avatar billede bodhisatva Nybegynder
20. november 2001 - 11:29 #2
Ok, dvs. at .jar filen skal kastes ind i resin1.xx/lib ???
Hvordan kalder man driveren direkte fra java så???
Avatar billede disky Nybegynder
20. november 2001 - 11:33 #3
nej det er ikke tvunget den er der, du kan smide den hvor du vil, bare den er nævnt i CLASSPATH

du kan kalde den med:

package dk.ecsoft.database.mysql;

import java.sql.*;

/**
*
* @author  srr
* @version
*/
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)
    {           
//        System.out.println(\"************************************************************************\");
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
//                System.out.println(\"con = \"+con);
            }
        }
        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 dne klasse kalder du med:

public class Database extends dbHandler
{
   
    /** Creates new Database */
    public Database()
    {
    }

    public boolean open()
    {
        return super.open(\"org.gjt.mm.mysql.Driver\",\"jdbc:mysql://localhost/BaseNavn\",\"UserName\",\"Password\");
    }
}

Avatar billede tmceu Praktikant
20. november 2001 - 11:35 #4
Ved at importere pakken i dit JSP dokument

Om mm-driveren er den bedste ? Jeg har selv brugt den i over et år uden problemer, men har til gengæld heller ikke brugt andre :-)
Avatar billede tmceu Praktikant
20. november 2001 - 11:36 #5
disky >> arbejder du hos ecsoft ?
Avatar billede bodhisatva Nybegynder
20. november 2001 - 11:47 #6
Ehm, hvordan tilføjer jeg så driveren til min CLASSPATH???
Avatar billede disky Nybegynder
20. november 2001 - 11:57 #7
tmceu: yep det gør jeg.

Men koden er ikke firmaets jeg har bare brugt min personlig kode i et firma projekt, og glemt at fjerne den package henvisning inden posting :)

hvor arbejder du ?
Avatar billede bodhisatva Nybegynder
20. november 2001 - 12:02 #8
Min jsp-side ser ud som følger:

<html>
<head>
    <title>test at mysql</title>
</head>
<%@ page language=\"java\" import=\"java.sql.* , mysqldriver.*\" %>
<body>
<h1> TEST info fra mysql-database</h1>
<table border=\"1\" width=\"400\">
<tr>
<td><b> test</b></td><td><b>test2</b></td>
<td><b> test3</b></td>
</tr>
<% //step1
Class.forName(\"org.gjt.mm.mysql.Driver\");
//step2
Connection myConn = DriverManager.getConnection(\"jdbc:mysql:test\");
//step3
Statement stmt = myConn.createStatement();
//step4
ResultSet myResultSet = stmt.executeQuery(\"select * from test\");
//step6
if(myResultSet != null)
{
//step7
while(myResultSet.next())
{
String test = myResultSet.getString(\"test\");
String test2 = myResultSet.getString(\"test2\");
String test3 = myResultSet.getString(\"test3\");
%>
<tr>
<td><%= test %></td>
<td><%= test2 %></td>
<td><%= test3 %></td>
</tr>

<%
//step8
}
}

//step 9 og 10

stmt.close();
//step11
myConn.close();
%>


</table>


</body>
</html>

men jeg får en;
500 Servlet Exception
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
    at com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:390)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:120)
    at _dss._testdatabase__jsp._jspService(/dss/testdatabase.jsp:17)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
    at com.caucho.jsp.JavaPage.subservice(JavaPage.java:81)
    at com.caucho.jsp.Page.service(Page.java:398)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:166)
    at com.caucho.server.http.Invocation.service(Invocation.java:272)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:128)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
    at java.lang.Thread.run(Thread.java:484)


--------------------------------------------------------------------------------
Resin 2.0.1 (built Tue Jul 10 13:13:19 PDT 2001)

HVORFOR?

Avatar billede disky Nybegynder
20. november 2001 - 12:07 #9
Byt
Connection myConn = DriverManager.getConnection(\"jdbc:mysql:test\");

ud med:

Connection myConn = DriverManager.getConnection(\"jdbc:mysql://localhost/BaseNavn\",\"USERNAME\",\"PASSWORD\");

Husk at ret BaseNavn, Username, Password.
Avatar billede disky Nybegynder
20. november 2001 - 12:08 #10
Og den fejl du får skyldes at du IKKE har mysql jar filen i din classpath

Den SKAL nævnes i den path, eller du skal udpakke den jar fil så den ligger i din WEB-INF/classes/ dir.
Avatar billede bodhisatva Nybegynder
20. november 2001 - 12:14 #11
AAARRRGGHHHH!!! Pisset virker!
Jeg takker, bukker og skraber for hjælpen. I er sgu\' et par dejlige knæjter i to... c\",)
Avatar billede disky Nybegynder
20. november 2001 - 12:16 #12
:-)

Glæder mig det virker
Avatar billede bodhisatva Nybegynder
20. november 2001 - 12:42 #13
Disky, det var jo pisse nemt... når bare man får lidt hjælp :)
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