Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

zugriff via jdbc erzeugt java.lang.NullPointerException

5 views
Skip to first unread message

Sandra

unread,
Feb 19, 2002, 7:42:23 AM2/19/02
to
Hallo
Ich will Daten mit einem SQL-Befehl updaten. Ich benutze den Typ 4
Treiber zyh.
Die Daten werden nicht upgedaten in meiner FoxPro Tabelle. Ich kriege
folgende Fehlermeldung auf dem Webserver:

java.lang.NullPointerException:
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:145)
at com.hxtt.sql.dbf.DBFMemo.if(unknown Source)
at com.hxtt.sql.dbf.ShareTable.int(unknown Source)
at com.hxtt.sql.dbf.DBFTable.a(unknown Source)
at com.hxtt.sql.dbf.DBFTable.<init>(unknown Source)
at com.hxtt.sql.dbf.getTable(unknown Source)
at com.hxtt.sql.hxttSQL.if(unknown Source)
at com.hxtt.sql.hxttSQL.a(unknown Source)
at com.hxtt.sql.hxttPreparedStatement.executeUpdate(unknown Source)
at dbGui49.doPost(dbGui49.java:190)
at javax.srevlet.http.HttpServlet.service(HttpServlet.java:521)
at javax.srevlet.http.HttpServlet.service(HttpServlet.java:588)
at com.novell.application.ServletGateway.ServletGateConnection.runServlet(ServletGateConnection.java)
usw.

Diese Fehlermeldungen treten nicht bei jedem mal ausführen auf.
Hier ist ein Ausschnitt des Codes

Connection con = null;
// Statement stmt = null;
ResultSet rs = null;
PreparedStatement ps = null;
String url = "jdbc:DBF:/sys:copal/copal_data/data/gesch/data/stamm";
String sql;

try {
Class.forName("zyh.sql.dbf.DBFDriver").newInstance();
con = DriverManager.getConnection(url, "fre","xy");

sql = "UPDATE part SET Nsa = ?, Bzng = ?, Bzn2 = ?, Tart = ?, Meeh
= ?, Fstat = ?, Nzn = ? WHERE Random = ?";

ps = con.prepareStatement(sql);

// updating records

if(proceed)
{
ps.setString(1, Nsa);
ps.setString(2, Bzng);
ps.setString(3, Bzn2);
ps.setString(4, Tart);
ps.setString(5, Meeh);
ps.setString(6, Fstat);
ps.setString(7, Nzn);
ps.setString(8, Primarykey);
int i = 0;
i = ps.executeUpdate();
if (i == 0)
{//140
out.print("No Update");
}
}
Ich danke euch für Eure Hilfe.
Sandra Frei

Susanne Klemm

unread,
Feb 19, 2002, 7:54:39 AM2/19/02
to

"Sandra" <sand...@yahoo.com> schrieb im Newsbeitrag
news:953cabb0.02021...@posting.google.com...
hallo sandra

ich habe oft die erfahrung gemacht, dass eine nullpointerexception in
zusammenhang mit sql-befehlen dadurch zustande kommen, dass die sqlabfrage
bzw update kein ergebnis hatte. also wenn deine where-klausel verursacht,
dass keine datensätze ausgewählt wurden. oder hier:
> ps.setString(7, Nzn);
ist ps null, wirft der methodenaufruf die nullpointerexception.
verlaß dich nicht auf meine aussagen. bin in dem gebiet noch neu :)

susanne


Uwe Plonus

unread,
Feb 19, 2002, 8:25:34 AM2/19/02
to
Hallo Sandra,

es wird hier in der NG gerne gesehen, wenn die Teilnehmer auch einen
Nachnamen haben. Bitte ergänze Deinen Nachnamen im Header entsprechend
(siehe auch http://www.dclj.de/dcljstart.html).

Sandra wrote:

> Hallo
> Ich will Daten mit einem SQL-Befehl updaten. Ich benutze den Typ 4
> Treiber zyh.
> Die Daten werden nicht upgedaten in meiner FoxPro Tabelle. Ich kriege
> folgende Fehlermeldung auf dem Webserver:
>
> java.lang.NullPointerException:
> at java.io.RandomAccessFile.<init>(RandomAccessFile.java:145)
> at com.hxtt.sql.dbf.DBFMemo.if(unknown Source)
> at com.hxtt.sql.dbf.ShareTable.int(unknown Source)
> at com.hxtt.sql.dbf.DBFTable.a(unknown Source)
> at com.hxtt.sql.dbf.DBFTable.<init>(unknown Source)
> at com.hxtt.sql.dbf.getTable(unknown Source)
> at com.hxtt.sql.hxttSQL.if(unknown Source)
> at com.hxtt.sql.hxttSQL.a(unknown Source)
> at com.hxtt.sql.hxttPreparedStatement.executeUpdate(unknown Source)
> at dbGui49.doPost(dbGui49.java:190)


Hier steht die Zeile, in der der Fehler genau auftritt (190). Ich gehe
davon aus, daß der folgende Codeausschnitt aus der Klasse dbGui49 stammt
(oder ?)

Wenn man jetzt wüßte, welches die Zeile 190 ist, wäre die Fehlersuche
einfacher.

Blind geraten:

Sind Deine Variablen alle auf nicht null-Werte gesetzt?

Ist die Connection-URL korrekt?

BTW es ist in Java üblich Klassennamen groß zu schreiben und Variablen
klein.

Uwe

Sandra

unread,
Feb 19, 2002, 1:15:34 PM2/19/02
to
> hallo sandra
>
> ich habe oft die erfahrung gemacht, dass eine nullpointerexception in
> zusammenhang mit sql-befehlen dadurch zustande kommen, dass die sqlabfrage
> bzw update kein ergebnis hatte. also wenn deine where-klausel verursacht,
> dass keine datensätze ausgewählt wurden. oder hier:
> > ps.setString(7, Nzn);
Ist das der Wert für die Where-Klausel? Ich habe gedacht der Wert für
die Where-Klausel sei ps.setString(8, Primarykey);

> ist ps null, wirft der methodenaufruf die nullpointerexception.
> verlaß dich nicht auf meine aussagen. bin in dem gebiet noch neu :)
Danke für deine Hilfe
Sandra Frei

Nico Seessle

unread,
Feb 19, 2002, 2:16:11 PM2/19/02
to
"Uwe Plonus" <upl...@unilog.de> schrieb im Newsbeitrag
news:3C72524E...@unilog.de...

>> at com.hxtt.sql.hxttPreparedStatement.executeUpdate(unknown Source)
>> at dbGui49.doPost(dbGui49.java:190)

> Hier steht die Zeile, in der der Fehler genau auftritt (190). Ich gehe
> davon aus, daß der folgende Codeausschnitt aus der Klasse dbGui49 stammt
> (oder ?)

>> ps.setString(8, Primarykey);


>> int i = 0;
>> i = ps.executeUpdate();

> Wenn man jetzt wüßte, welches die Zeile 190 ist, wäre die Fehlersuche
> einfacher.

Da als nächstes com.hxtt...executeUpdate kommt dürfte es die letzte oben
zitierte sein, oder?

> Ist die Connection-URL korrekt?

Da der Fehler letztenende ja irgendwo im java.io.RandomAccessFile auftritt
würde ich mal auf irgendwas in diesem Zusammenhang tippen.

Interessant wäre vielleicht noch die JDK/JRE-Version, damit man mal schauen
kann was denn in Zeile 145 in RandomAccessFile steht.

Nico

Karl Schmidt

unread,
Feb 19, 2002, 3:32:13 PM2/19/02
to
Uwe Plonus schrieb:

> > java.lang.NullPointerException:
> > at java.io.RandomAccessFile.<init>(RandomAccessFile.java:145)
> > at com.hxtt.sql.dbf.DBFMemo.if(unknown Source)
> > at com.hxtt.sql.dbf.ShareTable.int(unknown Source)
> > at com.hxtt.sql.dbf.DBFTable.a(unknown Source)
> > at com.hxtt.sql.dbf.DBFTable.<init>(unknown Source)
> > at com.hxtt.sql.dbf.getTable(unknown Source)
> > at com.hxtt.sql.hxttSQL.if(unknown Source)
> > at com.hxtt.sql.hxttSQL.a(unknown Source)
> > at com.hxtt.sql.hxttPreparedStatement.executeUpdate(unknown Source)
> > at dbGui49.doPost(dbGui49.java:190)
>
> Hier steht die Zeile, in der der Fehler genau auftritt (190). Ich gehe
> davon aus, daß der folgende Codeausschnitt aus der Klasse dbGui49 stammt
> (oder ?)

Ne, eben nicht. Wenn der Fehler in doPost aufgetreten wäre, würde der Stacktrace wohl kaum durch den
ganzen SQL-Driver gehen. Dummerweise scheint der Treiber obfuscated zu sein (solche Leute gehören
erschossen. Wenn schon obfuscaten, dann bitte aussagekräftigere Fehlermeldungen!) Daher läßt sich so
nicht nachvollziehen, was genau die Ursache ist. Offensichtlich tritt der Fehler im Konstruktor von
RandomAccessFile auf.

Ich tippe auf einen Fehler im Treiber. Wenn RandomAccessFile im Konstruktor eine NPE schmeißt, kann dies
eigentlich nur bedeuten, daß entweder der Dateiname oder der Mode ("rw" oder "r") null ist. Die Ursache
hierfür wäre im Treiber zu suchen (Open source hat doch was für sich - zumindest für den Anwender [i love
MySQL :-)]). Wenn die Ursache in einem falschen Parameter läge, müßte der Treiber eine SQLException
werfen.

[80% quote gelöscht]

erst Leute auf die Netiquette aufmerksam machen und dann Fullquote mit Mini-Content. Tststs...


--

MfG


Karl Schmidt
ICQ #15923569


Sandra

unread,
Feb 20, 2002, 12:46:21 AM2/20/02
to
Hallo Nico

> Interessant wäre vielleicht noch die JDK/JRE-Version, damit man mal schauen
> kann was denn in Zeile 145 in RandomAccessFile steht.
Meine JDK Version ist 1.2.2

Sanda Frei

unread,
Feb 20, 2002, 3:39:36 AM2/20/02
to
Hallo
Der Fehler tritt hier auf
i = pstmt.executeUpdate();

Ich habe den Code ein bisschen abgeaendert:
PreparedStatement pstmt = con.prepareStatement(sql);

// updating records
if(proceed)
{
pstmt.setString(1, Nsa);
pstmt.setString(2, Bzng);
pstmt.setString(3, Bzn2);
pstmt.setString(4, Tart);
pstmt.setString(5, Meeh);
pstmt.setString(6, Fstat);
pstmt.setString(7, Nzn);
pstmt.setString(8, Primarykey);
int i = 0;
i = pstmt.executeUpdate(); //191
if (i == 0)
{
out.print("No Update");
}
}
pstmt.close();

und jetzt habe ich folgende Fehlermeldung:
java.lang.NullPointerException:
at javax.servlet.http.HttpServlet.service(HttpServlet.java:521)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at com.novell.application.ServletGateway.ServletGateConnection.runServlet(ServletGateConnection.java)
at com.novell.application.ServletGateway.ServletGateConnection.handleRequest(ServletGateConnection.java)
at com.novell.application.ServletGateway.ServletGateConnection.run(ServletGateConnection.java)
at java.lang.Thread.run(Thread.java:479)

java.SQLException: java.lang.NullPointerException:


at com.hxtt.sql.hxttSQL.a(unknown Source)
at com.hxtt.sql.hxttPreparedStatement.executeUpdate(unknown Source)

at dbGui66.doPost(dbGui66.java:191)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:521)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)
at com.novell.application.ServletGateway.ServletGateConnection.runServlet(ServletGateConnection.java)
at com.novell.application.ServletGateway.ServletGateConnection.handleRequest(ServletGateConnection.java)
at com.novell.application.ServletGateway.ServletGateConnection.run(ServletGateConnection.java)
at java.lang.Thread.run(Thread.java:479

Der Fehler

at java.io.RandomAccessFile.<init>(RandomAccessFile.java:145)

erscheint jetzt also nicht mehr, weiss aber auch nicht warum. Habe ja
lediglich die Reihenfolge ein bisschen umgestellt.
Sandra Frei

0 new messages