PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : frage



C_h_r_i_s
01-08-2002, 07:47
hiho all.

ICh möchte in java ein programm schreiben, mit dem ich auf eine oracle Datenabnk zugreifen kann und sachen in eine tabelle eintragen kann. zum programieren verwende ich den JDeveloper. wenn ich jetzt da eine neue Application erstell, erstellt mir der jdeveloper 2 files. eins das application1.java heist und eins das frame1.java heist, also für die oberfläche. jetzt meine frage: muss ich den code um auf die datenbank zuzugreifen in dem frame1.java oder in dem application1.java stehen?

und noch eine frage: immo greife ich mit java über einen odbv treiber auf die daten bank zu. geht das auch direkt ohne odbc?

ich muss noch dazu sagen, das noch so gut wie keine ahnung von java habe :(

mfg
Chirs

anda_skoa
01-08-2002, 09:36
Hi!

Ich kann den JDeveloper nicht und weiß darum nicht, wofür dort welche Klasse vorgesehen ist, aber du solltes in Teilen der GUI, in deinem Fall dem Frame, keine Funktionalität implementieren, die nichts mit Anzeige oder Eingabe zu tun hat.

Die UI sollte von der Funkionalität der Applikation getrennt sein, soweit das möglich ist.

Nur mal so zum Ausprobieren kannst du es sicher in der Applikationsklasse machen, besser wäre es, überhaupt ein eigenes Modul zu machen, dass in der Applikation nur benutzt wird.

Zur zweiten Frage:
Leider hält sich mein Wissen bezüglich Datenbanken unter Java auch in Grenzen, aber wenn es einen direkten Java "Treiber" für deine DB gibt, kann man den natürlich auch verwenden.
Die Applikation bzw. dein Datenbankmodul wird dann halt an diese Datenbank gebunden, was bei Verwendung eine Schnittstelle wie JDBC nicht so stark ausfällt.

Ciao,
_

C_h_r_i_s
01-08-2002, 09:44
hiho
erst mal danke für diene antwort.

aber wie kann ich dann von dem Application1. java aud z.B. Testfelder in dem Frame zugreifen ? also so das ich TEst von den Felder einlesen, bzw in den feldern ausgeben kann ?


mfg
Chris

C_h_r_i_s
01-08-2002, 09:54
und könntest du mir bitte ein paar sachen aus dem unten stehen code erklären ?
vielen DAnk

package mypackage1;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JEditorPane;
import java.awt.Rectangle;

public class Frame1 extends JFrame
{
JEditorPane jEditorPane1 = new JEditorPane();

public Frame1()
{
try <--------------- das
{
jbInit();
}
catch(Exception e) <--------------- das
{
e.printStackTrace(); <--------------- das



}

}

private void jbInit() throws Exception <--------------- das throws
{
this.getContentPane().setLayout(null);
this.setSize(new Dimension(400, 300));
this.setTitle("Test");
jEditorPane1.setText("jEditorPane1");
jEditorPane1.setBounds(new Rectangle(20, 15, 90, 50));
this.getContentPane().add(jEditorPane1, null);
}
public static void main(String args[])
{


}
}

Stranger
01-08-2002, 11:24
hi ,

das try :

heist probiere also probiere das was in der geschweiften klammer steht

das catch:

das catch heist wenn bei try eine exception auftritt fang diese auf un führe den code in der geschweiften klammer aus.


eine exeception ist sozusagen eine fehlermeldung (Ausnahmetyp).

printStackTrace:

druckt einen Auszug aus dem LaufzeitStack.

throws execption:

heist soviel wie wirft einen Ausnahmetyp der mit catch gefangen werden muß.



ich hoffe das hilft dir ein bisschen.
:)

anda_skoa
01-08-2002, 12:32
Original geschrieben von C_h_r_i_s

aber wie kann ich dann von dem Application1. java aud z.B. Testfelder in dem Frame zugreifen ? also so das ich TEst von den Felder einlesen, bzw in den feldern ausgeben kann ?


In dem du in deiner Frame Klasse entsprechende Methoden einbaust, die dann die Inhalter der Frameelemente ändern oder zurückliefern.

Du kannst es auch umgekehrt machen, also das der Frame sich die nötigen Werte aus den anderen Klassen holt und bei speziellen Events, zb Klick auf OK, diese Werten in die Datenklassen zurückschreibt.

Letzters wird im Document View Model gemacht, da arbeitet der View mit den Daten im Document. die Application eben falls.

Ciao,
_

anda_skoa
01-08-2002, 12:38
Original geschrieben von Stranger
hi ,

das try :

heist probiere also probiere das was in der geschweiften klammer steht


Dazu noch eine Ergänzung.
Wenn in einem try{} Block mehr als ein Statement steht, wird der Block nur so weit ausgeführt, bis eines der Statements eine Exception wirft.




das catch:

das catch heist wenn bei try eine exception auftritt fang diese auf un führe den code in der geschweiften klammer aus.


Man kann auch mehrere catch Blöcke hintereinander haben, es wird der rste Block genommen, der zutrifft:

Beispiel:


try {
new FileInputStream("test.dat");
} catch (FileNotFoundException e) {
} catch (IOException e) {
}


FileNotFoundException ist eine der Möglichen Execptions die der FileInputStream Konstruktor werfen kann.
Aber alle sind IOExceptions, das heißt, sollte es keine FileNotFoundException sein, wird der zweite Block Akitv.

Wäre die Reihenfolge umgekehrt, würde immer nur die allgemeinere Regel aktiv.

Ciao,
_

C_h_r_i_s
02-08-2002, 08:31
also ich hab dem Frame folgendes hinzugefügt

public void setTXT (String test)
{
jEditorPane1.setText(test);
}

des is doch richtig oder ?

aber wie greif i jetzt aus der Applicatgfion1 draf zu ?

Frame1.setTXT geth irgendwie net :(


mei is des kompliziert.. :)

mfg
Chris

anda_skoa
02-08-2002, 09:19
Original geschrieben von C_h_r_i_s
also ich hab dem Frame folgendes hinzugefügt

public void setTXT (String test)
{
jEditorPane1.setText(test);
}

des is doch richtig oder ?



Ja, das passt so.



aber wie greif i jetzt aus der Applicatgfion1 draf zu ?

Frame1.setTXT geth irgendwie net :(


Hmm, ist Frame1 der Name der Klasse, oder der Instanzvariable?
Da das File so heißt nehm ich mal an es ist die Klasse.

Dann wird irgendwo so etwas stehen:


Frame1 frame = new Frame1();


frame ist da die Instanzvariable von Frame1.


frame.setText("anda_skoa rules");

sollte gehen



mei is des kompliziert.. :)


:D
So kompliziert ist das nicht.
Am Anfang ein bischen ungewohnt, wenn man noch kein OOP gemacht hat.

Ciao,
_

C_h_r_i_s
06-08-2002, 06:30
thx a lot.

mal ne andere frage.

wenn ich in einer JSP eine Variable definier z.B. String color = "red";

und ich will den inhalt dann in html verwenden, also z.B.
<Body bgcolor ="color">

wie muss ich das schreiben, das der den inhalt der variablen nimmt?
weil so wie oben gehts net net so worklich. genausowenig wie
<Body bgcolor ='color'>
<Body bgcolor = color>


mfg
CHris

anda_skoa
06-08-2002, 08:16
Mit JSP hab ich noch nix gemacht, sorry.

Ciao,
_

C_h_r_i_s
06-08-2002, 08:54
ok. schade. aber des is net sooo wichtig. kann man ja auch anders machen.

soory, wenn ich andauernd mit fragen bomadier, aber da is scho die nexte :)
noch mal zu datenbanken :)

also bau ich ne verbindung zur datenbank auf:

Class.forName( sDbDrv );
Connection cn = DriverManager.getConnection( sDbUrl, sUsr, sPwd );
java.sql.Statement st = cn.createStatement();
ResultSet rs = st.executeQuery( sSql );

mit der letzten zeile wird eine querry ausgeführt und in REsultset "gespeicher"
wenn ich jetzt aber etwas in die DB einfügen will, geht des ja so net.
jetzt hab ich einwenig rumgesucht und den befehlt "st.executeUpdate" gefunden, der wie ich gelsen, zum einfügen von sachen in die DB da is.

jetztm ach ich:

st.exectuteUpdate(INSERT INTO bla ('Name") VALUES ('bla');

aber dann kommt als fehlermeldung: keyword select not found... HÄÄÄÄÄÄÄÄÄ?
aber select braucht man ja nur bei queries......... oder is des der falsche befehl um was in eine DB einzufügen? wobei ich aber nicht anderes gefunden hab :(


scho mal danke für deine hilfe

mfg
Chirs

anda_skoa
06-08-2002, 15:11
HI!

Mach dir wegen der Fragen keine Sorgen, dazu ist das Forum ja da :)

Ich hab leider mit Datenbanke nicht so viel Erfahrung, das haben immer andere Leute gemacht, wenn ich bei sowas im Team mitgearbeitet habe.
Ich hab immer Netzwerksachen gemacht.

Vielleicht hilft dir das JDBC Tutorial von SUN:
http://java.sun.com/docs/books/tutorial/jdbc/

Die SUN Java Tutorials sind normalerweise ziemlich gut.

Ciao,
_

Sebastian
09-08-2002, 09:36
also mit executeUpdate funktioniert das generell.
Hier wird halt kein ResultSet zurückgegeben, was mach ja bei einem Insert eh nicht hat.. ich denke, du bist hier mit den "" etwas durcheinander gekommen.
dein Insert statement ist ja ein String der der Funktion übergeben wird, und _muss_ daher in " " stehen.

Ansonsten zu deiner JSP Frage, müsste das ganze im so funktionieren
<font color="<% write(color); %>">

Oder ähnlich.. schon über ein jahr her das ich in Java geproggt hab.. :rolleyes: