Get und Set-Methoden

Marco Witter

Grünschnabel
Hallo,

bitte dringend um Hilfe. Es geht um folgendes:
Ich möchte die Variable PV_PatientenID aus meiner Klasse Parser auslesen,
was bis dahin auch klappt und dann in meine Klasse AccessDB
mit Hilfe der get/set Methode übertragen und dann per insert in meine DB
einfügen.
Problem ist in der DB erscheinen nur null_Werte.Habe ich die get/set-Methode
falsch angewandt oder kann man sie dafür gar nicht anwenden?
Weil ein Sytem.out.println ergab, dass die Variable gar nicht in der AccessDB-Klasse ankommt.
Bitte um Hilfe oder Verbesserungsvorschläge, weil ich nicht wieder alles mit unendlich vielen Parameternn innerhalb
einer Methoden übergeben möchte

public class Parser {


private String PatientenID;
private int PV_PatientenID;

public void setPV_PatientenID(int PV_PatientenID)
{
this.PV_PatientenID=PV_PatientenID;
}
public int getPV_PatientenID()
{
return PV_PatientenID;
}

...........
if (Pat_ID) {
PatientenID= new String(ch, start, length);
//Typumwandlung von String nach Integer für die DB-Speicherung
//Möchte den Wert der PV_PatientenID in die DB schreiben
PV_PatientenID=Integer.parseInt(PatientenID);

________________________________________________________________
public class AccessDB{

Parser objParser=new Parser();
objParser.setPV_PatientenID(PV_PatientenID);

int Patient = s.executeUpdate("INSERT INTO Patient VALUES ('"
+objParser.getPV_PatientenID()+"','"+PV_PaName+"')");

}
 

Christian Fein

Erfahrenes Mitglied
Verfolge doch einfach mal im Debugger
mit welche Werte deine Variable animmt.


Deine Codeabschnitte helfen hier leider nicht viel
 

Marco Witter

Grünschnabel
Dann einmal noch genauer!
Siehe Inlineddoku:...


public class Parser {

//Deklarationen
private String PatientenID;
private int PV_PatientenID;

//get und set:-Methoden
public void setPV_PatientenID(int PV_PatientenID)
{
this.PV_PatientenID=PV_PatientenID;
}

public int getPV_PatientenID()
{
return PV_PatientenID;
}

...........
if (Pat_ID) {
PatientenID= new String(ch, start, length);
//Typumwandlung von String nach Integer für die DB-Speicherung
//Möchte den Wert der PV_PatientenID in die DB schreiben

//Wenn ich hier nach der Zuweisung ein System.out.println mache,
//wird die PV_PatientenID auch ausgeben
PV_PatientenID=Integer.parseInt(PatientenID);
//Ausgabe funktioniert

________________________________________________________________
public class AccessDB{

//Hier erzeuge ich mein Objekt von der Klasse Parser
Parser objParser=new Parser();

//Hier ist dann komischerweise nichts mehr in der PV_PatientenID
//Gebe ich aber anstatt der PV_PatientenID eine Zahle ein
//wird diese auch in die DB geschrieben
objParser.setPV_PatientenID(PV_PatientenID);

int Patient = s.executeUpdate("INSERT INTO Patient VALUES ('"
+objParser.getPV_PatientenID()+"','"+PV_PaName+"')");

}

Übergebe ich vielleicht falsch, sind meine ersten Versuche?
 
Zuletzt bearbeitet:

Christian Fein

Erfahrenes Mitglied
Original geschrieben von lambda
public int getPV_PatientenID()
{
return PV_PatientenID;
}

hier mal ein this. davor?

Ein this muss grundsätzlich nicht davor. Der this Zeiger wird nur benötigt
wenn es eine lokale Variable gleichen namens gibt.
In diesem Fall ist der Bezeichner für die lokale Variable gedacht, und mann
kann dann sich auf die Membervariable gezielt beziehen.

Du solltest deine Variable im Debuger beobachten und dort feststellen
wo sie ihren Wert nicht erhält.
Denn das der Wert null ist kann auch viel früher passieren, in Codeabschnitten
die hier nicht ersichtlich sind.

So wird dir kaum jemand helfen können, wenn ja dann war das eher durch
glück.
 

Marco Witter

Grünschnabel
Einmal den Komplettcode

Ich find es einfach nicht; hier der Komplettcode der beiden Klassen


//Klasse Parser

import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class Parser {

//Deklarieren
private int PV_PatientenID;
private String PV_PaName;

public void setPV_PatientenID(int PV_PatientenID)
{
this.PV_PatientenID=PV_PatientenID;
}

public int getPV_PatientenID()
{
return PV_PatientenID;
}



public class PeopleHandler extends DefaultHandler {

boolean Pat_ID = false;
boolean Patname = false;

public void startElement(String nsURI, String strippedName,
String tagName, Attributes attributes)throws SAXException {

if (tagName.equalsIgnoreCase("Pat_ID"))
Pat_ID = true;
if (tagName.equalsIgnoreCase("Patname"))
Patname = true;

}//Ende der Klammer startElement

public void characters(char[] ch, int start, int length) {


if (Pat_ID) {
String PatientenID;
PatientenID= new String(ch, start, length);
//Typumwandlung von String nach Integer für die DB-Speicherung
PV_PatientenID=Integer.parseInt(PatientenID);
//System.out.println(PV_PatientenID);
Pat_ID = false;
} else if (Patname) {
PV_PaName=new String(ch, start, length);
//System.out.println(PV_PaName);
Patname = false;
}
}//Ende Klammer characters
}// Ende Klammer PeopleHandler

public void parsetext() throws Exception {

XMLReader parser = XMLReaderFactory.createXMLReader(
"org.apache.xerces.parsers.SAXParser"); // sollte Properties laden
parser.setContentHandler(new PeopleHandler());
parser.parse("Body.txt");}

}//Ende der Klassenklammer

--____________________________________________________________

import java.sql.*;//Klasse zur Datenbankverbindung


public class Accessdatenbank {

private String PV_PaName;
private int PV_PatientenID;

//Methode für die Verbindung mit übergebenen Werten
public void Verbindung){

try{
//Laden der Datenbank-Treiber
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Treiber gefunden");
//Deklaration der Verbindungsvariable
}

catch(Exception e){

System.out.println("Driver not found!"+e);
}
try{
Connection con;
//Füllen der Objektvariable über den Rückgabewert von
//getConnection
con=DriverManager.getConnection("jdbc:eek:dbc:Emailcall");
//Konsolenausgabe
System.out.println("Verbindung hergestellt");

try{
//StatementObjekt für SQL-Abfragen/Anweisungen
Statement s = con.createStatement();


Parser objparser=new Parser();

//Einfügen der Inhalte in die Tabelle Patient
objparser.setPV_PatientenID(PV_PatientenID);

nt Patient = s.executeUpdate("INSERT INTO Patient VALUES ('"
+objparser.getPV_PatientenID()+"','"+PV_PaName+"')");

s.close();
con.close();
}
catch(Exception e)
{}

}

catch(Exception e){

System.out.println("Fehler!"+e);
}

}}
 

Neue Beiträge