Hallo,
ich habe folgendes Problem.
Ich habe die Halbe Nacht mit einem Kumpel versucht eine HZA Funktion einzubauen, die über dem Chat ausführbar ist.
Soweit so gut, hat auch geklappt!
Jetzt ist aber das Problem, dass wenn wir einen Eintrag in der DB haben und einen neuen hinzufügen bzw den alten ersetzen wollen das er diesen nur vorne ransetz.
Wie kann man das PRoblem lösen das durch den HZA-Chat Befehl der alte Eintrag durch den neuen Befehl ersetzen tut, statt hinzuzufügen und vor dem alten Wert setzt?
Ich habe bei google versucht das Problem zu finden, und habe versucht in dem HZA Code, den ich umgeschrieben habe, das CONCAT durch replace zu ersetzen, NetBeans zeigt auch keine Fehler an, der Chat startet auch, beim ausführen der Funktion kommt jedoch ein MySQL Fehler undd ie Funktion geht nicht, Mein Anliegen ist also folgendes, wie ändere ich meinen Code den ich nun zeigen werde, so um dass der DB Eintrag überschrieben wird, und (b) was bedeutet eigentlich CONCAT?
Für Antworten danke ich schonmal im Voraus!
Hier der Code:
|
Java-Quelltext
|
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
} else if(cmd.startsWith("hza")) {
// Start der Funktion
System.out.println(" CMD");
if(client.getRank() > 9) {
// WQir splitten nun nach ":"
String[] parameter = arg.split(":");
System.out.println("COUNT " + parameter.length);
if(parameter.length != 2) {
client.sendButlerMessage(channel.getName(), "Bitte die Funktion folgendermaßen benutzen: /hza [Nick]:[Channel]");
} else {
String nickname = parameter[0];
String comment = parameter[1];
// Schritt 1: Nickname überprüfen:
PoolConnection pcon = ConnectionPool.getConnection();
PreparedStatement ps = null;
String temp_nick = null;
try {
Connection con = pcon.connect();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT `name` FROM `accounts` WHERE `name`='" + nickname + "' LIMIT 1");
while(rs.next()) {
temp_nick = rs.getString("name");
break;
}
} catch(SQLException e) {
if(ps != null) {
try {
ps.close();
} catch (SQLException ex) {
/* Do Nothing */
}
}
pcon.close();
}
if(temp_nick == null) {
client.sendButlerMessage(channel.getName(), "Der angegebene Nickname existiert nicht.");
} else {
// Schritt 2: Age eintragen wenn Age-text valide
// Hier könnten noch weitere überprüfungen stattfinden(?)
if(comment.length() <= 1) {
client.sendButlerMessage(channel.getName(), "Bitte Channelnamen eingeben!");
} else {
try {
Connection con = pcon.connect();
ps = con.prepareStatement("UPDATE `accounts` SET `hza`=CONCAT(?, `hza`) WHERE `name`=? LIMIT 1");
ps.setString(1, comment);
ps.setString(2, temp_nick);
ps.executeUpdate();
//ps.executeQuery();
client.sendButlerMessage(channel.getName(), "°>"+ temp_nick + "|/w "<° hat soeben die von dir gesetzten Channel als HZA/HZE erhalten.");
} catch(SQLException e2) {
e2.printStackTrace();
} finally {
if(ps != null) {
try {
ps.close();
} catch(SQLException e3) {
/* Do Nothing */
}
}
pcon.close();
}
}
}
}
} else {
// Wenn keine Adminrechte, dann info an den Nutzer
client.sendButlerMessage(channel.getName(), "Du hast nicht genügend Rechte um diesen Befehl zu benutzen.");
System.out.println("Comment ERROR: Access denied");
}
// ende
|
Desweiteren hab ich die Frage warum die Bearbeitung bzw das setzen durch die HZA Funktion nur direkt sichtbar ist, wenn der User Offline ist?.. Bei User die Online sind, wird der Eintrag erst angezeigt im Profile wenn ein Serverneustart erfolgt ist, bei offline Nicks jedoch sofort ohne Neustart oder sonstiges.