Neuer Query wird nicht erkannt

Status
Nicht offen für weitere Antworten.

DayXtry

Mitglied
Hi,
ich habe ein kleines Testprogramm für die Anbindung von MySQL geschrieben.
Auf der ersten JSP Seite habe ich ein Eingabefeld, wo der Query eingegeben wird. Beim drücken des Submit Buttons wird auf die zweite JSP Seite weitergeleitet, welche die Java Klasse aufruft, und den Query abarbeitet. Das Ergebnis des Querys wird dann in der zweiten JSP Seite angezeigt.
Mein Problem ist, dass wenn ich von der zweiten Seite wieder zurück zur ersten gehe, und einen anderen Query eingebe, wird immer noch der letzte Query ausgeführt,...egal wie oft ich es versuche,...der neue Query wird erst ausgeführt, wenn ich meinen Tomcat neu starte.
Wisst ihr evtl. woran das liegen könnte?
Nach jedem abgearbeiteten Query schließ ich die MySQL Connection und das Statement. Beim Absetzen eines neuen Querys wird wieder eine neue Verbindung erzeugt.

MfG
DayXtry
 
S

SlaterB

Gast
tja, das liegt entweder an einem Browser-Cache oder an einem Fehler in deinem Programm,

mache dort doch mal Logausgaben:
"neuer Request mit Parameter query = .. angekommen",
"führe Query .. aus"

usw.

schaue im DB-Log ob überhaupt mehrere Anfragen gestellt werden
 

DayXtry

Mitglied
Danke für die schnelle Antwort!!!

Also, ich hab jetzt mal volgendes gemacht:
Programm ausgeführt -> Query abgesetzt -> Anzeige erfolgreich geladen -> Browser geschlossen -> Programm neu ausgeführt (ohne Tomcat neustart) -> Query Abgesetzt -> Anzeige des neuen Querys erfolgreich geladen


Schließ ich den Browser nicht, sondern ruf einfach das Programm erneut im Browser auf, wird das Ergebnis des letzten Querys angezeigt.

D.h. es liegt am Cache des Browsers...was kann man dagegen machen?

MfG
DayXtry
 
S

SlaterB

Gast
z.B. den Browser benennen..

da wirds doch wohl Einstellungen zum Caching geben, oder eine Hilfe,
oder bei google
'browsername caching ausschalten'
eintippen

oder du willst im Server bestimmte Einstellungen, die dem Browser mitteilen, dass er nicht cachen soll?
gibts wohl, ich selber weiß das grad nicht so genau, eher was für ein HTML-Forum
 

DayXtry

Mitglied
Danke für die Antwort...
Aber so wirklich hilft mir das nicht weiter,...wenn ich das Caching des Browsers bei mir ausschalte, dann bringt das später ja nicht wirklich was, wenn das Programm auf nem Server läuft, und andere User darauf zugreife. Bei denen wird ja das Problem dann auch auftreten.
Irgend wie kommt mir das n bissl komisch vor, dass das mit dem Cache des Browsers zusammenhängen soll. Denn früher, als ich mit PHP und MySQL programmiert hab, ist so ein Prob nie aufgetreten. Und jetzt wo ich mit Java programmier, soll der Cache schon nach einer DB Abfrage voll sein,...hmmmm...
 
S

SlaterB

Gast
wie gesagt ist das dann eher eine allgemeine Frage
'wann und warum cachen Browser HTML-Seiten, wie steuert man das, wie verhindert man das'

das ist eher was für ein HTML-Forum,
der Browser weiß nicht, und kann auch nicht wissen ob der Server nun PHP oder Java verwendet,

aber es liegt wahrscheinlich durchaus auch an den Einstellungen des Java-Servers,
also nicht ganz falsch hier,
wenn auch in der falschen Unterarea + falscher TopicTitel ;)
wer weiß ob sich ein J2EE-Experte hierher verirrt,
vielleicht neu aufmachen
 

DayXtry

Mitglied
hmmmm...so langsam bin ich davon überzeugt, dass es nicht am Cache liegt.
Ich speicher nämlich die vom Query zurückgelieferten Werte in einer HashMap...wenn ich jetzt am Ende die HashMap leer und dann erneut einen Query schicke, wird mir kein Ergebnis angezeigt, also so zu sagen nur die leere HashMap.

Hier mal der Code (ich hoffe dass es hier nicht zu voll wird):

Die index.jsp enthält nur ein Formular wo man den Query eingibt:
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <form name="form1" action="next_index.jsp" method="post">
        <input type="text" name="query">
        <input type="submit" name="submit" value="Ausführen">
    </form>
    
    </body>
</html>


next_index.jsp ist die Datei, in welcher auf die Java Klasse zugegriffen wird, und eine Verbindung zum MySQL Server erzeugt wird. Des weiteren werden hier die Ergebnisse angezeigt:
Code:
<jsp:useBean id="sql" class="mysql_test.mysql_actions" scope="session" />

<%@page contentType="text/html" import="java.sql.Connection,java.sql.Statement,java.sql.ResultSet,java.util.HashMap"%>
<%@page pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <%
       Connection con = null;
       con = sql.getConnection("db_account");
       
        if(con != null) {
    %>
        Verbindung wurde aufgebaut

    <%
        }else {
    %>
        Verbindung konnte nicht aufgebaut werden

    <%
        }
       String query = request.getParameter("query");
       ResultSet rSet = sql.executeQuery(query);

       HashMap hash = new HashMap();
       hash = sql.getResult(rSet);
       
       
       int cCount = sql.getColumnName().length;
       String[] cName = new String[cCount];
       cName = sql.getColumnName();

    %>
    Size: <%=sql.getColumnCount()%>
    <table border="1">
        <tr>
    
    <%
       for(int i=0; i<cCount; i++) {
    %>
            <th><%=cName[i]%></th>
    <%
       }
    %>
        </tr>
        <tr>
    <%


       if(hash != null) {
       for(int i=1; i<=hash.size(); i++) {
    %>
            <td><%=hash.get(String.valueOf(i).toString())%></td>
    <%
            if(i%cCount == 0) {
    %>
               </tr>
               <tr>
    <%
            }
       
        }
       }
       else {
    %>
        keine daten
    <%}%>
    
    </table>

    <%
       rSet.close();
       hash.clear();
       sql.endConn();
    %>
    
    [url="index.jsp"]Neuer Query[/url]
    
    </body>
</html>


mysql_actions.java ist die Klasse, wo wie der Name schon sagt, alle MySQL Aktionen durchgeführt werden:
Code:
/*
 * mysql_actions.java
 *
 * Created on 06. Dezember 2006, 14:02
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package mysql_test;

/**
 *
 * @author ulrichju
 */


import java.beans.*;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.*;
import java.util.HashMap;

import javax.swing.*;


public class mysql_actions {
    
    private Connection conn;
    private Statement stmt;
    private ResultSet rSet;
    private String[] Result;
    private int arraySize;
    private int ColumnCount;
    private String[] ColumnName;
    private HashMap hashDaten = new HashMap();
    
    /** Creates a new instance of mysql_actions */
    public mysql_actions() {
        conn = getConnection("db_account");
        //getResult(executeQuery("SELECT * FROM orders"));
    }
    
//*******************************************************************************************************
    
    public static void main(String[] args) {
        mysql_actions ma = new mysql_actions();
    }
    
//*******************************************************************************************************
    
    public Connection getConnection(String dbName) {
        Connection con = null;
        
        // Create a new MySQL Driver Instance
        try {
            System.out.println( "Create a new MySQL Driver Instance");
            Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        } catch ( Exception e ) {
            System.out.println( "ERROR: the MySQL Driver couldn't be created");
            e.printStackTrace(); 
        }
        
        
        try {
            System.out.println("Connect to MySQL " + dbName);
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + dbName, "root", "admin");
        }
        catch(SQLException sqe) {
            System.out.println("Couldn't acces MySQL database " + dbName);
            sqe.printStackTrace();
        }
        
        return con;
    }
    
//*******************************************************************************************************
    
    public ResultSet executeQuery(String query) {
        try {
            stmt = conn.createStatement();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        Object[] options = { "OK" };
        JOptionPane.showOptionDialog(null, query, "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]);
        try {
            rSet = stmt.executeQuery(query);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
        
        setColumnCount(rSet);
        System.out.println("size: " + getColumnCount());

        return rSet;
    }
    
//*******************************************************************************************************
    
    public void setColumnCount(ResultSet rS) {
        try {
            ResultSetMetaData meta = rS.getMetaData();
            ColumnCount = meta.getColumnCount();
            
            setColumnName(meta);
        }
        catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
//*******************************************************************************************************
    
    public int getColumnCount() {
        return ColumnCount;
    }
    
//*******************************************************************************************************
    
    public void setColumnName(ResultSetMetaData meta) {
        ColumnName = new String[getColumnCount()];
        
        int j=1;
        for(int i=0; i<getColumnCount(); i++) {
            try {
                ColumnName[i] = meta.getColumnName(j);
                j++;
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
    
//*******************************************************************************************************
    
    public String[] getColumnName() {
        return ColumnName;
    }
    
//*******************************************************************************************************
    
    public HashMap getResult(ResultSet rSet) {
        int i=1;
        try {
            while(rSet.next()) {
                for(int j=1; j<=getColumnCount(); j++) {
                    hashDaten.put(Integer.toString(i), rSet.getString(j));
                    System.out.println(rSet.getString(j));
                    i++;
                }
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        
        return hashDaten;
    }
    
//*******************************************************************************************************

    public void endConn() {
        try {
            rSet.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
        try {
            stmt.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }

        try {
            conn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
}
 
S

SlaterB

Gast
dein ganzer Code hätte ansonsten nicht interessiert,

wie ich am Anfang sagte, das einzige was die zweite Action machen sollte,
wäre eine Ausgabe 'ich habe query .. erhalten',
damit ließe sich jede Cache-Frage eindeutig klären ;)
 

DayXtry

Mitglied
jup, aber da es am Ende doch nicht am Cache lag, sondern ein Fehler im Programm an sich war, wäre der gesamte Quelltext schon von Interesse gewesen :D...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Problem mit neuer Hibernate Library und SLF4J Logging Datenbankprogrammierung 5
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
T TRIM in Query Datenbankprogrammierung 3
D sql query in methode mit rückgabetyp Datenbankprogrammierung 14
OnDemand Mysql Query Builder Datenbankprogrammierung 1
P Herausfinden wann Query null zurück gibt? Datenbankprogrammierung 1
OnDemand SQL Query Optimierung Datenbankprogrammierung 28
Kirby.exe Verwirrung beim Query Datenbankprogrammierung 4
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Oracle Query umbauen (sind die Querys gleich?) Datenbankprogrammierung 5
B Frage bei einer SQL Query Datenbankprogrammierung 3
C Fehlerhafte SQL Query Datenbankprogrammierung 4
B MySQL Query (Anfängerfrage :D) Datenbankprogrammierung 3
B JPA / HQL Support bei Query - Distanzberechnung Datenbankprogrammierung 0
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
Thallius MySQL Was ist falsch an dem Query? Datenbankprogrammierung 2
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
OnDemand MySQL SQL Query Datenbankprogrammierung 2
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
H MySQL Anderer Query-Ansatz? Datenbankprogrammierung 4
P Tricky SQL Query Datenbankprogrammierung 3
P SQL Query Problem Datenbankprogrammierung 14
I Nullpointer bei einfacher Daba query Datenbankprogrammierung 12
I Query für Geburtstage Datenbankprogrammierung 6
S MYSQL: "Packet for query is too large" Datenbankprogrammierung 0
S HSQLDB PrepareStatement- Falsche query Datenbankprogrammierung 2
F Oracle The parameter name [...] in the query's selection criteria does not match any parameter name d Datenbankprogrammierung 2
J Fehler bei mySQL Query Datenbankprogrammierung 19
R MySQL berechnete Spalte im selben query weiterverwenden? Datenbankprogrammierung 4
S MySQL Hochkommata in Query Datenbankprogrammierung 7
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
T HQL Query funktioniert nicht? Datenbankprogrammierung 8
M PostgreSQL Hibernate Query Restriction Datenbankprogrammierung 2
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
algebraiker Eclipse RCP - no persistent classes found for query class Datenbankprogrammierung 4
M List aus Hibernate Query Datenbankprogrammierung 5
M JPA-Query - nicht das komplette Objekt Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
S DB2 Eclipselink Query Datenbankprogrammierung 2
LadyMilka Ergebnistyp HQL-Query Datenbankprogrammierung 3
M Frage zu folgender Query in EJB-QL Datenbankprogrammierung 4
Eldorado MySQL HQL Query Tag von Date Datenbankprogrammierung 6
H DB auslesen (Hibernate, Query, Parameter) Datenbankprogrammierung 8
C Split String für SQl query Datenbankprogrammierung 10
C setSelectedValue in SQL Query übergeben Datenbankprogrammierung 20
D Hibernate: Query verarbeiten Datenbankprogrammierung 11
B Hibernate, einfaches Query Ausgeben Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
L Query grafisch erzeugen Datenbankprogrammierung 6
N SQL Query Browser Error Datenbankprogrammierung 6
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
D Hibernate, Criteria Query Datenbankprogrammierung 2
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2
G JPQL L*KE / JPA Query Language Datenbankprogrammierung 9
O SQL-Query bringt Fehler Datenbankprogrammierung 4
D kurze Frage zu einem Query Datenbankprogrammierung 6
S Query aus Querys Datenbankprogrammierung 14
P [Hibernate] Criterion-Query in HQL übersetzen Datenbankprogrammierung 10
E Wie koennte die SQL Query aussehen? Datenbankprogrammierung 13
B mysql query ausführen Datenbankprogrammierung 4
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
B Ein Query mit Mysql erzeugen Datenbankprogrammierung 6
G Hilfe bei Query für Spaltenansicht. Datenbankprogrammierung 20
A Fehler bei query Datenbankprogrammierung 7
G SQL-Query Methode Datenbankprogrammierung 4
krgewb Hibernate: Fremdschlüssel wird nicht erzeugt Datenbankprogrammierung 2
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Maxim6394 JPA / EclipseLink - n:m Beziehung wird nicht aktualisiert Datenbankprogrammierung 0
Maxim6394 JPA 3.2 & SQLite - LocalDateTime wird falsch geladen Datenbankprogrammierung 1
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
Watsoon Treiber wird in Intellij nicht geladen Datenbankprogrammierung 2
Kirby.exe PreparedStatement wird nicht ausgeführt Datenbankprogrammierung 5
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
J Netbeans 11 und Eclipse JPA 2.5 Entity wird nicht gefunden Datenbankprogrammierung 4
F H2 ObjectOptimisticLockingFailureException wird nicht geworfen Datenbankprogrammierung 0
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
S MySQL Speicher wird nicht freigegeben bei Datenbankabfragen Datenbankprogrammierung 6
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
E Nur der letzte Datensatz wird in Tabelle geschrieben Datenbankprogrammierung 4
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
K Datenbank wird bei Programmstart als .jar nicht mehr befüllt Datenbankprogrammierung 12
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
M OutOfMemoryException obwohl nur 1 Eintrag abgefragt wird Datenbankprogrammierung 7
T f:event preRenderView Trigger wird nicht ausgeführt Datenbankprogrammierung 4
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
A MySQL Datensatz wird nicht richtig gelöscht Datenbankprogrammierung 6
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9

Ähnliche Java Themen


Oben