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
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
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
>> 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
> > 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
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