Avatar billede aslan Nybegynder
16. april 2002 - 22:47 Der er 18 kommentarer og
2 løsninger

Bliver nød til at spørge igen!

Jeg har disse 2 classer som jeg vil have til at kommunikere med hinanden er der en der kan hjælpe mig med det? Den ene er en applet og den anden et query til interbase!

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;


public class Tekst extends Applet
implements ActionListener
{
    Button Knap;
    TextField Txt1,Txt2,Txt3;

    public void init()
    {
        Knap = new Button("Submit");
        Txt1 = new TextField(30);
        Txt2 = new TextField(30);
        Txt3 = new TextField(30);

        add (new Label ("indtast navn :"));
        add (Txt1);
        add (new Label ("indtast Adresse :"));
        add (Txt2);
        add (new Label ("indtast Postnr/By :"));
        add (Txt3);
        add (Knap);
        Knap.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e)
    {
        String txt1Indhold=Txt1.getText();
        String txt2Indhold=Txt2.getText();
        String txt3Indhold=Txt3.getText();

    }

}


import java.sql.*;


class TestDB
{
    TestDB()throws ClassNotFoundException , SQLException
    {
        Class.forName( "interbase.interclient.Driver" );
        String url = "jdbc:interbase://localhost/c:/Programmer/Borland/InterBase/examples/Database//hoteladm.gdb";
        Connection con = DriverManager.getConnection( url, "sysdba", "masterkey" );
        Statement statement = con.createStatement();

        String query = "insert into GUEST values ('xxx', 'xxx','xxxx')";
        statement.executeUpdate( query);

    }

    public static void main( String args[] ) throws ClassNotFoundException , SQLException
    {

        new TestDB();

    }
}
Avatar billede bearhugx Nybegynder
16. april 2002 - 22:54 #1
Hmm ..
I din DB Klasse - lav en metode, som f.eks.
public void insertGuest(String navn, String adresse, String postBy)
{
  String query = "Insert Into GUEST values('"+navn+",'"+adresse+"','"postBy"')";
  statement.executeUpdate(query);
}

Derudover skal statement-variablen lægges ud som en klasse-variabel

class TestDB
{
  Statement statement;
  TestDB() throws ...
  {
    ...
  }
}

Så kan du fra appletten lave en instans af TestDB, og kalde metoden insertGuest(...);

/Søren
Avatar billede bearhugx Nybegynder
16. april 2002 - 22:57 #2
hjalp det, ellers kan der uddybes...
Avatar billede aslan Nybegynder
16. april 2002 - 23:00 #3
Du må meget gerne uddybe:)
Avatar billede aslan Nybegynder
16. april 2002 - 23:08 #4
Er det her hvad du mener?

import java.sql.*;


public class TestDB
{
    Statement statement;
    public TestDB()throws ClassNotFoundException , SQLException
    {
        Class.forName( "interbase.interclient.Driver" );
        String url = "jdbc:interbase://localhost/c:/Programmer/Borland/InterBase/examples/Database//hoteladm.gdb";
        Connection con = DriverManager.getConnection( url, "sysdba", "masterkey" );
        statement = con.createStatement();



    }
    public void insertGuest(String navn, String adresse, String postBy)
    {
      String query = "Insert Into GUEST values('"+navn+"','"+adresse+"','"+postBy+"')";
            try
            {
            statement.executeUpdate(query);
            }
            catch (SQLException a)
            {

            }
    }

    public static void main( String args[] ) throws ClassNotFoundException , SQLException
    {

        new TestDB();

    }
}
Avatar billede bearhugx Nybegynder
16. april 2002 - 23:17 #5
Ok ..

Det virker som om at du har afprøvet din TestDB som et selvstædigt program pga. din "public static void main(...)"
-- Den metode synes jeg du skulle slette...

Det, der skal ske er, at når appletten stater (applet.init()), at der så bliver oprettet en db-forbindelse... Dette kunne ske ved at lave en instans af din DB-klasse (måske skulle du også finde et mere beskrivende navn end "TestDB" )

Når der så bliver trykket på "Submit", og applet.acctionPerformed() bliver kørt, så kan du kalde en metode på DB-klassen, som sender SQL-kaldet til din DB.


Her er noget kode...


public class Guest extends Applet implements ActionListener
{
  DBForbindelse db;
 
  Button submit;
  TextField txtNavn, txtAdresse, txtPostBy;

  public void init()
  {
    db = new DBForbindelse();
    submit = new Button("Submit");
    txtNavn = new TextField(30);
    txtAdresse = new TextField(30);
    txtPostBy = new TextField(30);
    add (new Label ("indtast navn :"));
    add (txtNavn);
    add (new Label ("indtast Adresse :"));
    add (txtAdresse);
    add (new Label ("indtast Postnr/By :"));
    add (txtPostBy);
    add (submit);
    submit.addActionListener(this);
  }

  public void actionPerformed(ActionEvent e)
  {
    String navn= txtNavn.getText();
    String adresse = txtAdresse.getText();
    String postBy = txtPostBy.getText();

    db.indsaetGaest(navn, adresse, postBy);
  }
}


public class DBForbindelse
{
  Connection conn;

  public DBForbindelse() throws ClassNotFoundException , SQLException
  {
    Class.forName( "interbase.interclient.Driver" );
    String url = "jdbc:interbase://localhost/c:/Programmer/Borland/InterBase/examples/Database//hoteladm.gdb";
    conn = DriverManager.getConnection( url, "sysdba", "masterkey" );
  }

  public void indsaetGaest(String navn, String adresse, String postBy)
  {
    Statement stmt = conn.createStatement();
    String query = "Insert Into GUEST values ('"+navn+",'"+adresse+"','"postBy"')";
    statement.executeUpdate(query);
  }
}
Avatar billede aslan Nybegynder
16. april 2002 - 23:39 #6
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;


public class Guest extends Applet implements ActionListener
{
  DBForbindelse db;

  Button submit;
  TextField txtNavn, txtAdresse, txtPostBy;

  public void init()
  {

    db = new DBForbindelse();

    submit = new Button("Submit");
    txtNavn = new TextField(30);
    txtAdresse = new TextField(30);
    txtPostBy = new TextField(30);
    add (new Label ("indtast navn :"));
    add (txtNavn);
    add (new Label ("indtast Adresse :"));
    add (txtAdresse);
    add (new Label ("indtast Postnr/By :"));
    add (txtPostBy);
    add (submit);
    submit.addActionListener(this);
  }

  public void actionPerformed(ActionEvent e)
  {
    String navn= txtNavn.getText();
    String adresse = txtAdresse.getText();
    String postBy = txtPostBy.getText();

    db.indsaetGaest(navn, adresse, postBy);
  }
}


import java.sql.*;


public class DBForbindelse
{
  Connection conn;
  Statement statement;
  public DBForbindelse() throws ClassNotFoundException , SQLException
  {
    Class.forName( "interbase.interclient.Driver" );
    String url = "jdbc:interbase://localhost/c:/Programmer/Borland/InterBase/examples/Database//hoteladm.gdb";
    conn = DriverManager.getConnection( url, "sysdba", "masterkey" );
  }

  public void indsaetGaest(String navn, String adresse, String postBy)
  {
    try{

    Statement stmt = conn.createStatement();
    String query = "Insert Into GUEST values ('"+navn+",'"+adresse+"','"+postBy+"')";


    statement.executeUpdate(query);

    }catch (SQLException a){}



  }
}


jeg får denne fejl i første classe :

C:\Documents and Settings\aslan\Skrivebord\Guest.java:16: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
    db = new DBForbindelse();
        ^
1 error

Tool completed with exit code 1
Avatar billede bearhugx Nybegynder
17. april 2002 - 00:13 #7
Du skal have en try...catch-blok rundt om "db = new DBForbindelse();"

Dette er fordi kontruktøren i DBForbindelse "...trows ClassNotFoundException, SQLException"
Avatar billede bearhugx Nybegynder
17. april 2002 - 00:14 #8
jeg bliver nød til at logge af nu - men hvis du har nogle problemer kan jeg hjælpe videre i morgen....

/Søren
Avatar billede aslan Nybegynder
17. april 2002 - 11:43 #9
Efter en masse forsøg og ændringer er jeg kommet frem disse classer. Mens jeg kan sagtens compile begge og køre dem sker der ikke noget inde på databasen ? Min catch println fortæller mig at den ikke kan finde interclient driveren?

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.sql.*;


public class Guest extends Applet implements ActionListener
{
  DBForbindelse db;

  Button submit;
  TextField txtAdresse, txtPostBy;

  public void init()
  {
    try
    {
        db = new DBForbindelse();
    }
    catch( ClassNotFoundException c )
    {}
    catch( SQLException s )
    {}

    submit = new Button("Submit");

    txtAdresse = new TextField(30);
    txtPostBy = new TextField(30);

    add (new Label ("indtast Navn :"));
    add (txtAdresse);
    add (new Label ("indtast Adresse :"));
    add (txtPostBy);
    add (submit);
    submit.addActionListener(this);
  }

  public void actionPerformed(ActionEvent e)
  {

    String adresse = txtAdresse.getText();
    String postBy = txtPostBy.getText();
  // System.out.println(navn);
    try
    {
        db.indsaetGaest(adresse, postBy);
    }
    catch( NullPointerException c )
    {}
  }
}


import java.sql.*;


public class DBForbindelse
{
  Connection conn;
  Statement statement;
  public DBForbindelse() throws ClassNotFoundException , SQLException
  {
    try
    {
        Class.forName( "interbase.interclient.Driver" );
    }
    catch( ClassNotFoundException c ){ System.out.println(c); }

    String url = "jdbc:interbase://localhost/c:/Programmer/Borland/InterBase/examples/Database//hoteladm.gdb";
    conn = DriverManager.getConnection( url, "sysdba", "masterkey" );
  }

  public void indsaetGaest( String adresse, String postBy)
  {
    try{

    Statement stmt = conn.createStatement();
    String query = "Insert Into GUEST(NAME,ADDRESS) values ('"+adresse+"','"+postBy+"')";


    statement.executeUpdate(query);

    }catch (SQLException a){System.out.println(a);}
    catch( NullPointerException n ){System.out.println(n);}


  }
}
Avatar billede bearhugx Nybegynder
17. april 2002 - 13:08 #10
Den driver bliver du nød til at lægge i classpathen ..
Avatar billede aslan Nybegynder
17. april 2002 - 13:11 #11
Min classpath:

C:\Program Files\Borland\InterClient\interclient.jar;.

Skal der være mere?
Avatar billede aslan Nybegynder
17. april 2002 - 13:25 #12
Utroligt at det skal være så besværligt at smide noget data ind !! Jeg har arbejdet med php og mysql hvor det er 10 gange nemmere?
Avatar billede bearhugx Nybegynder
17. april 2002 - 14:03 #13
Fik du det til at virke ???
Avatar billede aslan Nybegynder
17. april 2002 - 14:04 #14
Nej desvære den giver stadig samme fejl?
Avatar billede bearhugx Nybegynder
17. april 2002 - 14:10 #15
.. at den ikke kan finde driveren...
Avatar billede aslan Nybegynder
17. april 2002 - 14:12 #16
Ja den siger no suiteble driver og at den ikke kan finde interclient driveren?
Avatar billede aslan Nybegynder
17. april 2002 - 14:13 #17
Og det kan jeg ikke forstå for interclient kører og den findes i min classpath?
Avatar billede aslan Nybegynder
17. april 2002 - 22:03 #18
Ehm nogen ideer? eller også lukker jeg dette spørgsmål???
Avatar billede bearhugx Nybegynder
17. april 2002 - 22:11 #19
Nope... - luk og evt. gentag spørgsmålet - så er der sikkert nogle, som ser spørgsmålet igen (husk dog, ikke at lave refference til dette spørgsmål, da det er mod eksperten.dks retningslinier...)
Evt. skal der flere points til....

/Søren
Avatar billede aslan Nybegynder
17. april 2002 - 22:14 #20
ok
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