Avatar billede imperten Nybegynder
14. juli 2006 - 23:29 Der er 15 kommentarer

mysql forbindelse fra applet

Jeg har søgt og søgt på Eksperten og Google, men bliver mere og mere forvirret over problemet med at connecte til mysql-database.

Jeg har prøvet at følge forklaringen i: http://www.eksperten.dk/spm/98711, men ved at downloade den omtalte fil, og extrackte den i zip-programmet, får jeg ikke nogen fil med navnet: mysql_comp.jar, men derimod en, der hedder: mysql-connector-java-3.1.13-bin-g.jar. Kan det passe, at den er kommet til at hedde dette i mellemtiden?

2) Da: Class.forName("org.gjt.mm.mysql.Driver");  først giver en fejlmeddelelse på Run-time niveau, går jeg ud fra, at driver-filen (hvad den end måtte hedde) også skal oploades til serveren?... Hvor skal den da placeres? ... /bin måske?
Avatar billede arne_v Ekspert
15. juli 2006 - 00:59 #1
re 1)

ja

jeg er ike sikker på -g delen

min hedder

mysql-connector-java-3.1.7-bin.jar
Avatar billede arne_v Ekspert
15. juli 2006 - 01:00 #2
re 2)

din applet skal pakkes i en jar fil med et Class-Path direktiv i manifest
som har navnet på MySQL jar filen

og MySQL jar filen skal så ligge i samme dir som din jar fil
Avatar billede arne_v Ekspert
15. juli 2006 - 01:01 #3
man bruger iøvrigt normalt

Class.forName("com.mysql.jdbc.Driver");

nu om dage selvom den gamle version stadig virker
Avatar billede imperten Nybegynder
15. juli 2006 - 11:13 #4
Jeg har fulgt hjælpen til el-prebsi på http://www.eksperten.dk/spm/371968 og kan se, at når der skrives: jar cvmf manifest.mf pil.jar pil.class, så burde der komme en linje retur, hvor der står: added manifest

Sådan en får jeg ikke, men godt nok: adding: pil.class (IN=7855) (OUT=4316) (deflated 45%). Hvad kan det skyldes?

I manifest.mf har jeg skrevet:

Class-Path: mysql-connector-java-3.1.13-bin.jar

Og denne jar-fil har jeg lagt i samme mappe, mens jeg jar'er.
Avatar billede _carsten Nybegynder
15. juli 2006 - 15:47 #5
Som Arne skriver, skal du bruge

              mysql-connector-java-3.1.13-bin.jar og
              Class.forName("com.mysql.jdbc.Driver");


Du skal huske at afslutte dit manifest med et linieskift/blank linie.

På serveren skal mysql-connector-java-3.1.13-bin.jar ligge i samme dir som din egen applet.jar



Dit manifest kunne se sådan ud:

Manifest-Version: 1.0
Created-By: 1.5.0_01 (Sun Microsystems Inc.)
Class-Path: mysql-connector-java-3.1.13-bin.jar
Avatar billede arne_v Ekspert
15. juli 2006 - 17:06 #6
du kan checke om manifestet er der (det burde det altid være !?!?) med

jar tvf pil.jar
Avatar billede imperten Nybegynder
16. juli 2006 - 00:08 #7
Det er ikke fordi, jeg har opgivet projektet, eller ikke kan bruge jeres råd. Men dels blev jeg sendt ud i noget arbejde ... forberedelse til Langelandsfestivalen ... og dels så har jeg et mere basalt problem. Jeg har puttet alt med sql i java-programmet ind i kommentarlinjer, så den fejl jeg har, har altså intet med det at gøre.

Når jeg benytter Appletvieweren på min computer, virker programmet. Og når jeg uploader det til hjemmesiden som class funker det også. Men så snart jeg benytter jar og skriver følgende i php, opstår der blot et gråt felt.

<?php

  echo "<br><br>";
  echo "<p align='center'><applet code='pil.class' archive='pil.jar' width='600' height='424'></applet></p>";

?>

Det må jeg kæmpe lidt videre med i morgen, inden jeg eventuelt vender tilbage med sql funktionaliteten. Lige nu er jeg for træt til at se problemet!
Avatar billede arne_v Ekspert
16. juli 2006 - 02:18 #8
prøv og tilføj

codebase="."

i dit applet tag
Avatar billede imperten Nybegynder
16. juli 2006 - 11:53 #9
Tilføjelsen af codebase="." hjalp på det problem. Men efter at have fundet frem til dette http://www.eksperten.dk/spm/346904, kan jeg se, at det alligevel ikke dur. Jeg må have udtænkt en anden metode. Tak for hjælpen trods alt.
Avatar billede arne_v Ekspert
17. juli 2006 - 05:11 #10
du kan lade din applet snakke med et PHP script på dit web hotel (jeg antager
at problemet er adgang til databasen udefra)
Avatar billede imperten Nybegynder
17. juli 2006 - 12:25 #11
PHP kan trække data ud af databasen og dernæst føje dem ind i appletten ved hjælp af param-values. Men jeg kan ikke lige se, hvorledes man overfører variabelværdier fra appletten til PHP, når appletten lukkes ned. Kan man det?
Avatar billede arne_v Ekspert
17. juli 2006 - 13:14 #12
en applet kan lave HTTP requests til PHP scripts
Avatar billede imperten Nybegynder
18. juli 2006 - 23:19 #13
Jeg prøvede dette fra en anden tråd her på Eksperten, tilpasset mit program selvfølgelig:

    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();
        }
    }
}

insert.php:

<?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);
?>

Jeg går ud fra, det var det, du mente. Appletvieweren går ned på en SecurityException, hvis jeg skriver URL helt ud: http://www. osv., mens der kommer en java.net.PlainSocketImpl.connect fejl, hvis jeg bruger http://localhost/pil.class.

Den uploadede class-fil kørte fint i første omgang, dog uden at skrive noget i databasen. Da jeg så forsøgte at rette det til, gik det pludselig i gråt felt igen. Det er lidt træls at man ikke på hjemmesiden kan se, hvad den går ned på.
Avatar billede arne_v Ekspert
19. juli 2006 - 01:32 #14
insert metoden skal være i applet koden

URL i applet skal rettes til at indeholde navnet på sreveren (ikke localhost)

applet og PHP script skal ligge på samme server
Avatar billede imperten Nybegynder
20. juli 2006 - 12:11 #15
Nej, jeg tror simpelthen ikke, at jeg har tilladelse til dette. Programmet går i stå i følgende linje:

      HttpURLConnection con = (HttpURLConnection) url.openConnection();

Mærkeligt nok kører Appletvieweren fint forbi dette sted; men jeg tror, den blot ignorerer linjen, for den meddeler intet, selvom jeg skriver en falsk URL.

Ærgerligt nok.
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