Avatar billede dewalth Nybegynder
05. februar 2005 - 13:36 Der er 9 kommentarer og
1 løsning

Applet og mysql / realtime

Hey

Jeg her lige applet spørgsmål.
Jeg skal lave et applet der kan opdatere nogle værdier fra en mysql database hver 5 sekund.
Hvordan gøres dette lettes/bedst??. Jeg havde forstillet mig jeg ville bruge noget PHP til at initialisere applet med(parameter overførsel). Kan det evt. laves ved hjælp af noget klient / server??.
Således at når applet loades kontakter det en java server der så udføre sql kaldet.
I så fald kan et Resultset så sendes retur???
Er der nogle der har nogle gode links eller eksempler ville det være perfekt.
Avatar billede arne_v Ekspert
05. februar 2005 - 14:27 #1
Du kan godt generere applet tag i PHP.

Du kan godt lade applet'en kommunikere med et server side script f.eks. PHP
som så kommunikerer med databasen. Det er faktisk anbefalelsesværdigt.

Du kan ikke sende et result set return.
Avatar billede arne_v Ekspert
05. februar 2005 - 14:28 #2
Jeg poster lige er super simpelt eksempel.
Avatar billede arne_v Ekspert
05. februar 2005 - 14:29 #3
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.net.*;

public class DatabaseApplet extends Applet implements ActionListener {
    TextArea select = new TextArea();
    TextField f1 = new TextField();
    TextField f2 = new TextField();
    Button insert = new Button();
    public void init() {
        select.setColumns(40);
        select.setRows(20);
        select.setText(select());
        f1.setColumns(10);
        f2.setColumns(20);
        insert.setLabel("Add");
        insert.addActionListener(this);
        add(select, null);
        add(f1, null);
        add(f2, null);
        add(insert, null);
        setVisible(true);
    }
    public void actionPerformed(ActionEvent ev) {
        insert(f1.getText(), f2.getText());
        select.setText(select());
        repaint();
    }
    private String select() {
        StringBuffer res = new StringBuffer("");
        try {
            URL url = new URL("http://localhost/select.php");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            con.connect();
            if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
                BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                String line;
                while ( (line = br.readLine()) != null) {
                    res.append(line);
                    res.append("\r\n");
                }
                con.disconnect();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return res.toString();
    }
    private void insert(String f1, String f2) {
        try {
            URL url = new URL("http://localhost/insert.php");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            String info = "F1=" + f1 + "&F2=" + f2;
            con.setDoOutput(true);
            con.getOutputStream().write(info.getBytes());
            con.connect();
            if (con.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.err.println("POST failed");
            }
            con.disconnect();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
05. februar 2005 - 14:29 #4
<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
$rs = mysql_query("SELECT * FROM T1") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    print $row["F1"] . " " . $row["F2"] . "\n";
}
mysql_free_result($rs);
mysql_close($con);
?>
Avatar billede arne_v Ekspert
05. februar 2005 - 14:29 #5
<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
$f1 = $_POST["F1"];
$f2 = $_POST["F2"];
mysql_query("INSERT INTO T1(F1,F2) VALUES($f1,'$f2')") or die(mysql_error());
mysql_close($con);
?>
Avatar billede dewalth Nybegynder
05. februar 2005 - 14:47 #6
Vil dette ikke reloade siden??? Det er jeg nemlig ikke interesseret i. Eller rettere den må ikke reloade. sorry fik ikke lige nævnt i spørgsmålet. Værdierne i appletet skal bare  ændre sig uden at side reloader.
Avatar billede arne_v Ekspert
05. februar 2005 - 14:49 #7
Ovenstående applet gør det ikke.

Men du kan sagtens lade din applet refreshe data periodisk uden at selve
siden skal genloades af browseren.
Avatar billede dewalth Nybegynder
07. februar 2005 - 11:38 #8
Det spiller max, smid lige et svar. Men har dog lige et lille spørgsmål. Tro du det kan klare at blive opdateret hvert 5 sekund?.
Avatar billede arne_v Ekspert
07. februar 2005 - 11:56 #9
svar
Avatar billede arne_v Ekspert
07. februar 2005 - 11:57 #10
Ja - lad en timer køre og opdatere.
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