Toon posts:

[Java/JDBC] Interface tussen Afas en eigen applicatie

Pagina: 1
Acties:
  • 263 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste Tweakers,
Ik heb een klein probleem;

Op mijn werk gebruiken wij Afas als boekhoudsysteem, nu bestaat er de mogelijkheid om vanuit Afas een database te exporteren.
Deze database wil ik vervolgens op het internet zetten en hem met een eigen geschreven applicatie benaderen. In het applet wat ik tot nu toe geschreven heb, maak ik gebruik van een ODBC connectie, maar deze werkt niet. Het lijkt erop dat er wel een verbinding met de database wel tot stand komt, maar hij geeft vervolgens geen resultaten.

Nou hoorde ik van een klasgenoot dat je hiervoor JDBC moest gebruiken, een database driver voor Java. Hij zei me ook dat ik deze kon downloaden van http://developers.sun.com/product/jdbc/drivers, maar om eerlijk te zijn word ik daar niet wijs uit. Heb totaal geen idee welke ik moet kiezen?

Tot nu toe heb ik de volgende code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package Gui;

import java.sql.*;
import sun.jdbc.odbc.*;
import java.util.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class Database
{
  static Connection SQL_Con;  //deze variabelen zijn static zodat ze gebruikt kunnen worden uit andere klasse
  static Statement SQL_Stat;

  public Database()
  {
  }

  static void connect ( String Source ) throws Exception //
  {
  try             {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");                                // driver
        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";  // driver
        String Connect_URL = "jdbc:odbc:" + Source;                                   // maken van de connectie url
        database+= Connect_URL.trim() + ";DriverID=22;READONLY=true}";                // driver
        SQL_Con = DriverManager.getConnection( Connect_URL ,"","");                   // maken van connectie
        System.out.println(Connect_URL);                                              // printen van de database waarop hij geconnect is
        if (SQL_Con != null)
           SQL_Stat = SQL_Con.createStatement ();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }



  static ResultSet query(String SQL_Qry) throws SQLException  // Deze class wordt gebruikt voor Select query
    {
      if (SQL_Stat != null)
      {
        ResultSet SQL_Res = SQL_Stat.executeQuery (SQL_Qry);
        return SQL_Res;
      }
      else
        return null;
    }


  static void silentquery (String SQL_Qry) throws SQLException  // een uitvoerquery zonder resultset
    {
      if (SQL_Stat != null)
      SQL_Stat.executeUpdate (SQL_Qry);
    }


    static void disconnect ()  // het sluiten van de connectie
       {
         try
         {
            if (SQL_Con != null)
           {
              if (SQL_Stat != null) SQL_Stat.close ();
              SQL_Con.close ();
            }
         }
         catch(Exception e)
          {
           e.printStackTrace();
          }
        }
}


Is er misschien iemand van jullie die mij hiermee kan helpen?

Groetjes,

Nynke O+

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kunt met JDBC de ODBC aanspreken:
http://java.sun.com/j2se/.../getstart/bridge.doc.html

Dit zit standaard al in java.

[edit]
Verder heeft een Applet weinig rechten. Je mag met geen andere plek een verbinding opnemen dan de plek waar de applet vandaan komt. Dus als jij met een andere server (waar de odbc verbinding te krijgen valt) contact opneemt, gaat het niet werken.

[ Voor 48% gewijzigd door Alarmnummer op 11-04-2005 13:37 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:54

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op maandag 11 april 2005 @ 13:28:
Tot nu toe heb ik de volgende code:

....

Is er misschien iemand van jullie die mij hiermee kan helpen?

Groetjes,

Nynke O+
Prima, maar wat heb je nu al geprobeerd en wat lukt er nu precies niet mee? Welke (fout)meldingen krijg je precies? Zie ook P&W FAQ - De "quickstart" en P&W FAQ - Leer **** debuggen!!.

Daarnaast hoef je je naam niet onder je posts te zetten. Je nickname staat er al naast en via je profiel kunnen mensen je echte naam achterhalen mits je deze in je profiel hebt opgenomen :)

Edit: welkom op GoT trouwens :)

[ Voor 3% gewijzigd door Creepy op 11-04-2005 14:34 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Nog zomaar even een losse opmerking; je kunt je connection niet static maken. Deze is namelijk niet thread safe en niet reusable of de manier dat jij dat denkt. Je driver zelf is wel reusable, maar die roep je gewoon op via de static Drivermanager.

Connections sluit je telkens na gebruik en je vraagt een nieuwe aan wanneer je deze nodig heeft. Het mechanisme om connections te sharen heet Connection Pooling. De meeste application servers hebben deze al standaard. Als je niet in een AS omgeving werkt kun je ook losse gebruiken (bijvoorbeeld de antieke bitmechanic die echter nog steeds gewoon werkt).

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12 12:32
Op moderne windowsen zijn odbc koppeling automatisch al ge connectionpooled dacht ik.

Verwijderd

Topicstarter
hoi,

ik krijg geen foutmelding, maar in als ik mijn applet in Jbuilder run dan krijg ik wel de juiste gegevens uit de database en open ik de HTML file dan krijg ik niks.

Toen zei iemand dat ik dmv een JDBC ipv ODBC connectie moet werken, maar ik kom er niet uit wat ik nu moet aanpassen aan de geschreven code die ik heb neergezet!

x

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12 12:32
Volgens mij komt dat meer doordaat een appletviewer meer rechten heeft dan een applet in een browser venster.
Maar dat kan je zo zien door in de java console te koekeloeren als je de html hebt geladen. Rechts onderin de taakbalk zit dan een icoontje maar een entry "Show java console" in zit, of in een menu "Extra" of vergelijkbaar in je browser.
Pagina: 1