Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Donnerstag, 29. März 2012, 12:02

Benötige Hilfe bei /h-System über die Datenbank

Heyho alle zusammen :-)
Ich versuche mich gerade an einem System, mit dem ich vom Chat aus Hilfeseiten erstellen kann. Dazu nutze ich eine neue Tabelle in der Datenbank, komme allerdings nicht so ganz klar.

Ich habe folgenden Code in der CommandParser

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
else if (cmd.equals("h") || cmd.equals("help") || cmd.equals("hilfe")) {   
        	if (arg.equals("edit") & client.isMinS9()) {
            	client.sendButlerMessage(channel.getName(), "Über diese Funktion wird es bald möglich sein, die Hilfeseiten zu editieren");
        	} else if (arg.equals("edit") & !client.isMinS9()){
            	client.sendButlerMessage(channel.getName(), "Über edit weiß ich nichts.");
        	} else if (arg == null){
            	Popup popup = new Popup("Chathilfe", "Das Wichtigste im Überblick", "Hier werden die wichtigsten Funktionen im Chat erklärt:##_/a TEXT_#TEXT wird als öffentliche Nachricht gepostet.##_/e_#Das eigene Profil editieren.##_/f_ - noch nicht verfügbar#Die Freundeliste wird geöffnet.##_/forum_#Das Forum von Knuddels.de wird geöffnet.##_/go CHANNEL_#Du wechselst in den Channel CHANNEL.##_/h TOPIC_#Die Hilfeseite zu TOPIC wird geöffnet. Wird Topic ausgelassen, wird diese Hilfe hier geöffnet.##_/ig NICK_#NICK wird ignoriert.##_/info_#Die Info des Channels öffnet sich.##_/kiss NICK_#NICK küssen.##_/knuddel NICK_#SO kannst du NICK knuddeln. Beachte hierbei, dass du Knuddels haben musst, um jemanden zu knuddeln. Dir wird dabei ein Knuddel abgezogen.##_/like TEXT_#Drücke mit Hilfe von 50 Zeichen in deinem Profil aus, was du magst.#Durch die EIngabe von _/like !_ löschst du diese Eingabe wieder.##_/me TEXT_#Drücke im Chat aus, was du tust.##_/p NICK:TEXT_#Schicke TEXT privat an NICK.##_/readme TEXT_#Setzt TEXT als Readme. Diese wird oben im Profil stehen, bis du eine neue Readme setzt.##_/time_#Zeigt die aktuelle Zeit an.##_/w NICK_#Zeigt das Profil von NICK an.##_/wc_#Zeigt alle Channels an.##_/wordmix_#Startet eine neue Runde Wordmix.", 400, 300);
        	} else {
        	PoolConnection pcon = ConnectionPool.getConnection();
        	PreparedStatement ps = null;

        	try {
            	Connection con = pcon.connect();
            	ps = con.prepareStatement("SELECT `title`, `subtitle`, `text` FROM `help` WHERE `command` = ?");
            	ps.setString(1, arg);
            	ResultSet rs = ps.executeQuery();
            	
            	client.send(Popup.create(rs.getString("title"), rs.getString("subtitle"), rs.getString("text"), 400, 250));
        	} catch (SQLException e) {
            	e.printStackTrace();
        	} finally {
            	if (ps != null) {
                	try {
                    	ps.close();
                	} catch (SQLException e) {
                	}
            	}
            	pcon.close();
        	}
        	}


Es geht hierbei erstmal nur darum, einen Datensatz auszulesen und auszugeben. Allerdings bekomme ich folgende Fehlermeldung in der Konsole, wenn ich /h THEMA eingebe:

Java.sql.SQLException: Illegal operation on empty result set (hier in Zeile 18).
Ich habe den Code von der Funktion /showcareer kopiert und angepasst. Wo ist der Fehler?

Zweite Frage dazu: Wie genau kann ich abfragen, ob es das Thema in der Datenbank überhaupt gibt, um eine passende Fehlermeldung ausgeben zu können?

Danke im Voraus für die Hilfe :-)

Gruß,

Eddie

Localhost

Ehemaliger Supporter

Beiträge: 345

Wohnort: 127.0.0.1

  • Private Nachricht senden

2

Donnerstag, 29. März 2012, 12:58

Hallo und herzlich willkommen im Forum,

dein Code müsste folgendermaßen erweitert werden:

Java-Quelltext

1
client.send(Popup.create(rs.getString("title"), rs.getString("subtitle"), rs.getString("text"), 400, 250));

ersetzen mit:

Java-Quelltext

1
2
3
4
5
if(!rs.next()) {
	//Hilfe gibt es nicht
} else {
	client.send(Popup.create(rs.getString("title"), rs.getString("subtitle"), rs.getString("text"), 400, 250));
}


Beste Grüße,
Localhost
No support via message.

"Der gute Programmierer ist nicht der, der keine Fehler macht, sondern der, der seine Fehler rasch findet und behebt."

3

Donnerstag, 29. März 2012, 13:32

Heyho :-)

Leider hat das nicht funktioniert - ich habe dieselbe Fehlermeldung wie vorher auch, allerdings bezieht sich das auf die Zeile, in der steht: //Hilfe gibt es nicht

habe das ersetzt durch eine Fehlermeldung: client.sendButlerMessage(channel.getName(), "Zu diesem Thema gibt es keine Hilfe");
Genau diese Zeile wird jetzt als Fehler angegeben. Ich versteh das nicht...

4

Donnerstag, 29. März 2012, 13:42

Heyho :-)

Leider hat das nicht funktioniert - ich habe dieselbe Fehlermeldung wie vorher auch, allerdings bezieht sich das auf die Zeile, in der steht: //Hilfe gibt es nicht

habe das ersetzt durch eine Fehlermeldung: client.sendButlerMessage(channel.getName(), "Zu diesem Thema gibt es keine Hilfe");
Genau diese Zeile wird jetzt als Fehler angegeben. Ich versteh das nicht...


Sprich als command hast du in der Datenbank den Befehl eingetragen und rufst die Hilfe mit /hilfe COMMAND auf?

5

Donnerstag, 29. März 2012, 13:45

Ich kann dir da nicht ganz folgen...

Ich habe eine neue Tabelle dafür erstellt. Die Funktion /h THEMA bezieht sich auf Hilfeseite, die vom ganzen Chat aus verfügbar sind, deswegen auch die eigene DB. Das Einzige, was ich dann im Channel ausgebe, wo der user sich befindet, ist die Fehlermeldung.
Oder habe ich jetzt irgendwas falsch verstanden?

Edit: Ich habe eine neue Tabelle, keine neue Datenbank erstellt

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Eddie« (29. März 2012, 13:50)


6

Donnerstag, 29. März 2012, 13:48

Hast du denn auch schon Einträge in der Datenbank?

7

Donnerstag, 29. März 2012, 13:51

Verdammt, ich war zu langsam.

Ich habe eine neue Tabelle erstellt. Und es gibt bis jetzt einen Eintrag

8

Donnerstag, 29. März 2012, 13:54

Gut, gut. Und wie sieht dieser Eintrag aus?

9

Donnerstag, 29. März 2012, 14:00

Einen Screenshot davon siehst du HIER

10

Donnerstag, 29. März 2012, 14:02

Ja gut. Dann füg ihn so ein und gib im Chat
/help help ein.