JasonLief Geschrieben 13. Oktober 2010 Geschrieben 13. Oktober 2010 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 Zitieren
ronaldus Geschrieben 14. Oktober 2010 Geschrieben 14. Oktober 2010 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.