Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[JSP] JDBC, controleren op NULL waarde

Anoniem
IJsqueen
6 antwoorden
  • Mijn probleem is het volgende. Ik ben met JSP tables aan het maken met gegevens uit de database. Alle publicaties hebben een auteur en een titel, maar niet allemaal een subtitel. Dus probeer ik te controleren op een [b:0f17581f26]null[/b:0f17581f26] waarde in de DB. Dat werkt dus niet. Ik heb ook geprobeerd alle lege velden dan maar in te vullen met "X" en daat op te checken maar dat wil ook niet.

    [quote:0f17581f26]java.sql.SQLException: No data found[/quote:0f17581f26]
    Dat wist ik, daar zocht ik juist op. Dit zegt hij overigens ook bij "X".

    [code:1:0f17581f26]Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:era_acc");

    Statement stmt = con.createStatement();
    ResultSet AA = stmt.executeQuery("SELECT * FROM publications order by ID DESC;");
    while(AA.next()){%>
    <TD>
    <span class ="author"><%=AA.getString("author")%></span>
    <BR>
    <span class ="titles"><%=AA.getString("titles")%></span>
    <BR>
    <% //***hier de check***
    if (AA.getString("subtitle") != null) {%>
    <I><span class ="subtitle"><%=AA.getString("subtitle")%></I></span>
    <%}%>
    </TD>[/code:1:0f17581f26]

    Wie-oh-wie? :cry:
  • testen op (een java) null zou eigenlijk moeten werken. is de default waarde misschien een lege string ("")?

    anders probeer je't a.d.h.v ResultSet's wasNull()
  • [code:1:16d911a499]<% //***hier de check***
    if (!AA.wasNull) {%>
    <I><span class ="subtitle"><%=AA.getString("subtitle")%></I></span>
    <%}%> [/code:1:16d911a499]

    Helaas werkt dit ook niet… hij gaat uit van de hele recordset. (Dus ze komen er alsnog allemaal te staan.)

    [quote:16d911a499][b:16d911a499]wasNull[/b:16d911a499]
    [i:16d911a499]public boolean wasNull()[/i:16d911a499]
    throws SQLExceptionReports whether the last column read had a value of SQL NULL. Note that you must first call one of the getter methods on a column to try to read its value and then call the method wasNull to see if the value read was SQL NULL. [/quote:16d911a499]
  • doe je't wel correct?
    wasNull zegt iets over de laatst opgevraagde waarde uit de ResultSet

    dus eerst: AA.getString("subtitle")
    dan de check (was 'subtitle' NULL?): AA.wasNull()
  • ***FRUSTRATIE***
    Dan maar de hele code:

    [code:1:19673f0ee7]Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:era_acc");

    Statement stmt = con.createStatement();
    ResultSet AA = stmt.executeQuery("SELECT * FROM publications order by ID DESC;");
    %>
    <H1>Publications</H1>
    <TABLE>
    <TR><TH>Reference</TH><TH>options</TH></TR>
    <%
    while(AA.next()){%>
    <TR>
    <TD>
    <span class ="author"><%=AA.getString("author")%></span>
    <BR>
    <span class ="titles"><%=AA.getString("titles")%></span>
    <BR>
    <%AA.getString("subtitle");
    if (!AA.wasNull()){
    %>
    <I><span class ="subtitle"><%=AA.getString("subtitle")%></I></span>
    <%}%>
    </TD>
    <TD>
    <%AA.getString("optionslink");
    if (!AA.wasNull()){%>
    <CENTER><a href = "<%=AA.getString("optionslink")%>"><IMG SRC="graph/ie.gif" alt = "Hyperlink"></a></center>
    <%}%>
    </TD>
    </tr>
    <%}
    if (AA!=null) AA.close();
    if (stmt!=null) stmt.close();
    if (con!=null) con.close();

    %>[/code:1:19673f0ee7]

    En dan gaat het vooral om dit stukje:

    [b:19673f0ee7][size=9:19673f0ee7]<%AA.getString("subtitle");
    if (!AA.wasNull()){
    %>[/size:19673f0ee7][/b:19673f0ee7]

    Maar dan geeft hij nog steeds de
  • de eerste keer in een variabele opslaan: String subtitle = AA.getString("subtitle");
    dan de check: AA.wasNull();
    dan eventueel verder werken met variabele subtitle (dus niet opnieuw de resultset queryen)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.