Java-MySQL erhalten, Letzte Zeile
Also ich hab Probleme mit meinem Programm. Im Grunde so weit das Programm ist wie eine MySQL-basierten chat. Es speichert die Nachrichten in der Datenbank und liest Sie. Ich habe Probleme mit dem Lesen. Was es jetzt ist immer 5 Sekunden re-Lesen Sie alle Nachrichten in der Datenbank. Ich habe versucht, es zu machen, Lesen Sie nur die neuen Nachrichten, aber das funktioniert nicht so gut. Das ist mein code:
public static void readChat()
{
try
{
MySQL.sqlConnect();
try
{
Statement st = con.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM table1");
while (res.next())
{
if (lastLine < res.getInt("id"))
{
String message = res.getString("message");
Gui.out.append(message + "\n");
lastLine = res.getInt("id");
}
}
}
catch (SQLException s)
{
System.out.println("SQL code does not execute.");
}
MySQL.sqlDisconnect();
}
catch (Exception e)
{
e.printStackTrace();
}
}
Ich bin nicht sicher, wie man diese effizient. Es dauert viel zu lange, um es auszuführen. Wenn die id 23 kann ich auch nicht sehen, die Meldungen erscheinen, weil es länger dauert als 5 Sekunden. Ich fügte hinzu, die
if (lastLine < res.getInt("id"))
und
lastLine = res.getInt("id");
in meinem bemühen, es zu machen, Lesen Sie nur die neuen Nachrichten, aber es hat nicht funktioniert wie erwartet. Ich denke, dass es noch ausgeführte Zeile um Zeile, nur nicht in den chat. Es muss doch einen einfacheren Weg.
EDIT: Okay, habe das problem behoben mit dem nicht-sehen-Nachrichten, (ich vergessen zu entfernen, die Teil von dem code, der gelöscht der chat alle 5 Sekunden). Aber es dauert noch eine lange Zeit, um Nachrichten zu senden, etwa 3-4 Sekunden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dieses, und Sie werden sich Wundern 🙂
instad
und bekomme ohne wenn
Natürlich stellen Sie sicher, dass der index auf id-Feld
können Sie Lesen Sie einfach die gewünschten Zeilen, derzeit sind Sie Lesen alle Zeilen, versuchen Sie folgenden,
Du noch Durchlaufen alle Ergebnisse. Wenn Sie die Möglichkeit haben, die Speicherung der Zeitpunkt, zu dem Nachrichten gesendet werden ich.e erstellen eines Zeit-Spalte, können Sie versuchen, zu verkürzen, wie viele Ergebnisse zurückgegeben werden, indem Sie tun,
wo die erste ? ist die id des Benutzers und der 2.? ist die Zeit der letzten Nachricht Lesen. Dies basiert auf der Annahme, id ist einige eindeutige Benutzer-id.
Was über die Aufrechterhaltung einer Liste, fügen Sie neue Nachricht an die Liste, wenn Sie in der Datenbank speichern und nur Lesen der neuen Nachrichten in der Liste und deaktivieren Sie es am Ende readChat()?