2016-06-02 12 views
1

Ich habe eine Frage nach diesem Code. VisualStudio zeigt keine Fehler oder Warnungen an, aber wenn ich es ausführe, ist das Ergebnis nur der Ausnahmefehler ("Etwas ist schiefgelaufen."). So habe ich es schon immer gemacht, aber irgendwie immer funktioniert, außer jetzt. Fehle ich eine einfache Sache?Datenbankverbindung C#

 protected void Page_Load(object sender, EventArgs e) 
    { 
     // Connect 
     OleDbConnection conn = new OleDbConnection(); 
     conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\royva\documents\visual studio 2013\Projects\CookieMultiView\CookieMultiView\App_Data\Databank.mdb';Persist Security Info=True"; 
     // Execute 
     OleDbCommand cmd = new OleDbCommand(); 
     cmd.Connection = conn; 
     cmd.CommandText = "SELECT * FROM teachers = ?";// + Request.QueryString["id"]; 
     lbl.Text = ""; 

     cmd.Parameters.AddWithValue("id",Request.QueryString["id"]); 


     // Read 
     try 
     { 
      conn.Open(); 
      OleDbDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       lbl.Text = reader["teacherid"].ToString(); 
      } 
     } 
     catch (Exception ex) 
     { 
      //lbl.Text = ex.StackTrace;     
      lbl.Text = "Something went wrong."; 
     } 
     finally 
     { 
      conn.Close(); 
     } 
+1

Entfernen Sie 'lbl.Text =" Etwas ging schief. ";' Und setzen Sie dann einen Unterbrechungspunkt auf 'lbl.Text = ex.StackTrace;' und gehen Sie durch. Außerdem fügen Sie einen Parameter 'id' hinzu, aber es ist nicht in Ihrer Select-Abfrage – Izzy

+2

Überprüfen Sie Ihren BefehlText Ich denke, es sollte so etwas sein: cmd.CommandText =" SELECT * FROM Lehrer WHERE ID =? " – Bambuk

+1

Setzen Sie einen Haltepunkt bei 'lbl.Text =" Etwas ging schief. ";' Linie und sehen, was die eigentliche Ausnahme ist. Ab jetzt kann es eines der hundert Probleme sein. – jitendragarg

Antwort

1

Für Detaillierte Informationen des Exception,

catch (Exception ex) 
{ 
    //Either you can write log or display in label 
    lbl.Text = ex.Message; 
} 

Überprüfen Sie auch die Ordner Zugriffsrechte für

Data Source='C:\Users\royva\documents\visual studio 2013\Projects\CookieMultiView\CookieMultiView\App_Data\Databank.mdb' 

Programmatically nach bestimmten Dateien zu überprüfen, verwenden File.Exists(path), die eine boolean zurück angibt, ob die Datei im Pfad existiert.

Und überprüfen Sie, ob die Verbindung hergestellt wurde oder nicht.

+0

Es ist eine lokale Datenbank und die Datenbank wird dort über Visual Studio's platziert. Der Fehler, den ich mit Ihrem Tipp von ex.message bekommen, ist "Kein Wert für einen oder mehrere erforderliche Parameter angegeben." Das wird mir helfen! Danke :) –

+0

Es war tatsächlich die Verbindung, irgendwie war die Datenbank schreibgeschützt. Habe es jetzt funktioniert! Prost! –

+0

Gut zu @RoyvanderPlas hören :) – SSJGSS