You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

mikimaus1711

User / Kunde

  • "mikimaus1711" started this thread

Posts: 55

  • Send private message

1

Monday, December 26th 2016, 8:46pm

BungeeCord - MySQL, ist der Eintrag vorhanden? Result : Boolean

Hallo Community,
ich bin gerade echt überfragt.
Ich möchte jeden neuen Spieler auf einer MySQL Datenbank speichern.
Dazu benötige ich die Abfrage ob der Spieler bereits auf dem Server war.
Ps.: Programmiere gerade mit Bungeecord.
Hier mein Code:

Abfrage ob der Spieler vorher bereits auf dem Server war:


Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	public static boolean PlayedBefore(ProxiedPlayer username) {
		String qry = "SELECT uuid FROM banned_players WHERE uuid=?";
		try {
			PreparedStatement pstmt = SQLConnect.getConnection().prepareStatement(qry);
			pstmt.setString(1, username.getUniqueId().toString());
			ResultSet resultSet = pstmt.executeQuery();
			if (resultSet.wasNull()) {
				pstmt.close();
				return false;
			} else {
				pstmt.close();
				return true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
			return true;
		}
	}




Hier das Server Connect Event:


Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	@EventHandler
	public void onJoin(ServerConnectedEvent event) {
		
		System.out.println("SQLFunction.PlayedBefore");
		if(!SQLFunction.PlayedBefore(event.getPlayer())) {
			
			SQLFunction.addNewPlayer(event.getPlayer());
			System.out.println("FALSE - DIDNT PLAY BEFORE");
			
		} else {
			
			System.out.println("TRUE - PLAYED BEFORE");
			
		}

	}



Mein Problem: Egal ob ich auf der MySQL Datenbank als Eintrag vorhanden bin oder nicht, es wird immer "TRUE - PLAYED BEFORE" ausgegeben.
Was mach ich Falsch? :D

Vielen Dank für eure Mithilfe




Sorse

User / Kunde

  • "Sorse" is male

Posts: 90

Location: Baden-Württemberg

  • Send private message

2

Monday, December 26th 2016, 9:10pm

Ist es richtig, dass du in der Tabelle "banned_players" nachschaust? Und geb dein Ergebnis des querys am besten auch mal in der Konsole aus

mikimaus1711

User / Kunde

  • "mikimaus1711" started this thread

Posts: 55

  • Send private message

3

Monday, December 26th 2016, 9:12pm

Ist es richtig, dass du in der Tabelle "banned_players" nachschaust?

Ja ist richtig




So habs jetzt aus Zufall geschafft.
Für jeden der am gleichem Problem sitzt, hier ist die Lösung:




Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	public static boolean PlayedBefore(ProxiedPlayer username) {
		String qry = "SELECT * FROM banned_players WHERE uuid=?";
		boolean exist = false;
		try {
			PreparedStatement pstmt = SQLConnect.getConnection().prepareStatement(qry);
			pstmt.setString(1, username.getUniqueId().toString());
			ResultSet resultSet = pstmt.executeQuery();
			exist = resultSet.next();
			pstmt.close();
			return exist;

		} catch (SQLException e) {
			e.printStackTrace();
			return exist;
		}
	}





War so dumm und hab nicht kapiert, dass next() ein boolean ist...

Viel Spaß damit.

This post has been edited 1 times, last edit by "mikimaus1711" (Dec 26th 2016, 9:45pm)


Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net