Veröffentlicht 13. Oktober 201014 j Hallo FI-Users Ich habe ein Problem. Ich wollte ein Hangman Programmiere mit C# in ASP.NET Dann habe ich eine Lokale DB und ein Server, auf der DB sind die Wörter. Nun habe ich einen Service erstellt, welchen diese Daten "abholt". Jedoch bekomme ich immer ein Fehler: No current query in data reader Methode im Service [WebMethod] public String[] getRandomWord() { String currentWord = ""; MySqlConnection connection = new MySqlConnection(myConnectionString); MySqlCommand command = connection.CreateCommand(); command.CommandText = "SELECT COUNT(*) AS COUNT FROM hangman_woerter"; MySqlDataReader Reader; connection.Open(); Reader = command.ExecuteReader(); if (Reader.HasRows) { Reader.Read(); maxValue = Reader.GetInt32(Reader.GetOrdinal("COUNT")); } else { maxValue = 10; } //Random zufall = new Random(); //int randomID = zufall.Next(Reader); connection.Close(); connection.Open(); command.CommandText = "SELECT Wort FROM hangman_woerter"; Reader = command.ExecuteReader(); Random zufall = new Random(); int randomID = zufall.Next(maxValue); if (Reader.HasRows) { for (int i = 0; i < randomID; i++) { Reader.NextResult(); } Reader.Read(); [COLOR="Red"]currentWord = Reader.GetString("Wort");[/COLOR] } String[] wortArray = new String[currentWord.Length]; //wortArray = currentWord.Split(); for (int i = 0; i < currentWord.Length; i++) { wortArray[i] = currentWord.Substring(i, 1); } connection.Close(); return wortArray; } Was machh ich falsch? Danke für Antworten Lg JL
14. Oktober 201014 j Hi, vielleicht solltest Du anders vorgehen: 1. Hole alle Wörter aus der DB Reader = command.ExecuteReader(); List<string> alleWoerter = new List<string>; while (reader.Read()) { alleWoerter.Add(Reader.GetString("Wort")); } 2. Dann Zufallszahl bestimmen...und aus Wort aus der Liste holen int max = alleWoerter.Count; Random zufall = new Random(); int randomID = zufall.Next(max); string wort = alleWoerter[randomID]; Die Verarbeitung ist einfacher und nicht so Fehleranfällig... Gruß Ron
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.