Avatar billede tommer Nybegynder
04. april 2002 - 23:40 Der er 14 kommentarer og
1 løsning

adgang til access

kan nogen give et lille eksempel hvor tilgang en access database bruges til et eller andet....
Avatar billede erikjacobsen Ekspert
04. april 2002 - 23:43 #1
Jah, mit klassiske eksempel ser sådan ud på en Windows maskine
med en opsat ODBC forbindelse til en Access DB:

<%@ page import="java.sql.*" %>

<%
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection con = DriverManager.getConnection("jdbc:odbc:ejnames","","");
  Statement stm = con.createStatement();
  stm.executeUpdate("INSERT INTO navne (navn) values ('Findus')");

  ResultSet rs = stm.executeQuery("select * from navne");
  while (rs.next()) {
    out.println(rs.getString("navn"));
    out.println("<br>");
  }
%>
Avatar billede tommer Nybegynder
04. april 2002 - 23:46 #2
hvordan sætter jeg ODBC forbindelsen op? (jeg bruger win xp)
Avatar billede erikjacobsen Ekspert
04. april 2002 - 23:48 #3
Uha, disse nymodens ting... Er der noget der hedder kontrolpanel i
XP? Så er det et sted der du skal lede. Du skal lave en System DNS
Avatar billede erikjacobsen Ekspert
04. april 2002 - 23:51 #4
Kontrolpanel | Administration | datakilder(odbc)

hedder det i W2K
Avatar billede disky Nybegynder
04. april 2002 - 23:51 #5
tommer:
I erik's eksempel er der flere design fejl.

1. Man skal helst have så lidt java kode i sine JSP sider som muligt. For detved at undgå hård kobling imellem design og funktionalitet.
2. brug ikke out.println() til at spytte HTML ud med, så er det hamrende svært at ændre design bagefter.

Dog kan det bruges til at give et indtryk af hvad man kan gøre.
Hvis du skal bruge det seriøst gør du klogt i at stoppe database tingene i sin egen klasse, og kun åbne forbindelsen en gang, altså en form for connection pool.

Hvis du skal vide hvordan man opsætter en ODBC er det nok bedre du spørger i en Windows gruppe istedet.

hvis du kigger lidt tilbage i tiden kan du finde min database handler klasse, som mange læsere faktisk bruger.
Avatar billede erikjacobsen Ekspert
04. april 2002 - 23:51 #6
Ha, det hedder jo System DSN (!!) på et faneblad
Avatar billede erikjacobsen Ekspert
04. april 2002 - 23:52 #7
Det er såmænd også kun beregnet til at få "hul igennem"
disky :)
Avatar billede tommer Nybegynder
04. april 2002 - 23:52 #8
aldi.. jeg forsøger lige tak for hjælpen :-)
Avatar billede tommer Nybegynder
05. april 2002 - 00:02 #9
disky: jeg kan ikke finde din database handler klasse... kan du gi' lidt nærmere oplysning om hvor ?
Avatar billede disky Nybegynder
05. april 2002 - 09:45 #10
Erik:
Okay da, sorry, jeg var lettere bustet i aftes :)

Tommer:

Den er lige her:

parametere til open metoden er:

open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:ODBCNAME","USERNAME","PASSWORD");


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);
                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;
    }
}
Avatar billede tommer Nybegynder
05. april 2002 - 11:22 #11
disky: super du er i godt humør igen :-) *griner*
tak for koden.
jeg er lidt grøn med jsp....
skal jeg så oprette en ny instans af denne klasse når min jsp side loades, eller hvad gør man ???????
Avatar billede disky Nybegynder
05. april 2002 - 13:27 #12
I den simple løsning ja.

Det synes jeg du skal gøre, at skulle til og bruge en database connection pool, kan godt drille noget.

Så skriv f.eks. følgende i din jsp side:

<%
DBHandler db=new DBHandler();
if(db.open("sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:ODBCNAME","USERNAME","PASSWORD"))
{
  ResultSet res=db.doQuery("select navn from venner");
  while(res.next())
{
%>
<br>navn = <%=res.getString("navn")%>
<%
}
db.close();
}
%>


Det er ikke testet, men skulle umiddelbart udskrive de 'navn' som er i en tabel med navnet 'tabel'
Avatar billede tommer Nybegynder
25. april 2002 - 23:48 #13
disky: nu har jeg endelig haft tid til at afprøve din handler klasse men jeg kan sgu ikke få det til at spille. jeg er lidt i tvivl om det er en almindelig java klasse eller hvad, og skal den includes på jsp siden eller hvad ??
Avatar billede tommer Nybegynder
26. april 2002 - 00:36 #14
når jeg bruger en indre klasse så virker det ! :-)
Avatar billede el_fredo Praktikant
03. oktober 2002 - 13:17 #15
Det er alt sammen fine eksempler, men er der ikke en der kan poste et funktionelt eksempel. Altså, den .jsp kode der skal bruges, den kodestump der skal bruges i Java (hvis der bruges beans) samt præcist hvilken tabel (navn) der skal oprettes i Access, hvilke tupler der er oprettet i denne tabel, samt hvad jeg skal kalde databasen. Desuden vil jeg også gerne vide hvad jeg skal skrive under ODBC32 tilgangen under kontrolpanelet... det ville være kanon. Jeg kan ikke få ovenstående eksempler til at fungere sammen, selvom java-delen kompilerer fint. Jeg ved ikke hvad der skal skrives de andre steder (såsom i access databasen) for at de enkelte dele kan arbejde sammen. Med andre ord, så søger jeg et meget simpelt, men komplet funktionelt eksempel, så jeg kan forstå hvad der skal stå hvor, og derefter selv ændre indholdet. På forhånd tak, og tak for en ellers god debat. /Jan.
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