2016-06-04 11 views
0

Mein Programm zeigt Spielerbewertungen mit einem Alias ​​ihrer Wahl an, Problem ist, dass ich viele Testläufe in der Datenbank gespeichert habe, also habe ich alle Einträge der Tabelle gelöscht werden noch in der Listenansicht angezeigt?ListView zeigt Daten an, die nicht in der Datenbank gespeichert sind.

Jede Hilfe wäre willkommen.

public partial class Leaderboard : Form 
{ 

    public Leaderboard() 
    { 
     InitializeComponent(); 
    } 

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=F:\Graded\WindowsFormsApplication2\WindowsFormsApplication2\bin\Debug\SusData.mdf;Integrated Security=True;Connect Timeout=30"); 

    private void Leaderboard_Shown(object sender, EventArgs e) 
    { 
     //try catch for opening the connection to the database 
     try 
     { 
      con.Open();//Opening the connection to the database 
     } 
     catch (SqlException ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
      Application.ExitThread();//if the database can't be opened the application will exit 
     } 
    } 



    private void button1_Click(object sender, EventArgs e) 
    { 

     SqlCommand cm = new SqlCommand("SELECT Alias, Score FROM HighScore ORDER BY SCORE ASC");//SqlCommand allows for SQl commands to be used in the code of c# 
     try//try catch for loading the users highScores 
     { 

      SqlDataReader DR = cm.ExecuteReader(); 
      while (DR.Read()) 
      { 
       ListViewItem item = new ListViewItem(DR["Score"].ToString());//Filling the list view with users Scores 
       item.SubItems.Add(DR["Alias"].ToString());//Filling the list view with users Alias 
       listView1.Items.Add(item);//Adding everything 

      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);//Messagebox in case theres an error loading the scores to the ListView 

     } 
    } 

Ich habe zwei Tabellen in der Datenbank und die Spieler-Scores und Alias' in der Highscore-Tabelle gespeichert sind.

Antwort

0

sollten Sie explizit Ihre SqlConnection (in einem using Block) um Ihren SqlCommand-Code verwenden. Nicht sicher, bei welcher Verbindung die Abfrage ausgeführt wird.

+0

Ich dachte, ich mache das? SqlCommand cm = neuer SqlCommand ("SELECT * VON HighScore ORDER BY Score ASC", con); –

+0

Das ist der Befehl, aber welche Verbindung benutzt er, um den Befehl auszuführen? Sie sollten einen Haltepunkt setzen und überprüfen, um sicher zu sehen, aber am besten ist es, Ihren Befehl mit einem 'using' zu verbinden und die Verbindung explizit festzulegen. Siehe: http://stackoverflow.com/questions/5460659/c-sharp-sqlcommand-connection-open-issue – Jonathan

+0

Sie sagen also, dass die SqlConnection, die an der Spitze der Klasse deklariert ist, falsch ist? –

Verwandte Themen