2015-01-06 63 views
-1

我試圖運行這個程序,並得到這個錯誤在con.open所有的時間(),請幫助我!!!!!!!!在此行s.Name類型「System.Data.SqlClient.SqlException」未處理的異常在System.Data.dll中發生在C#中,請

public LinkedList<Station> getAllStation() 
{ 
     string conString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=\"C:\\Users\adi\\Documents\\RailDB.mdf\";Integrated Security=True;Connect Timeout=30"; 
     SqlConnection con = new SqlConnection(conString); 
     con.Open(); 

     string sqlString = "Select s.Id, s.Name, from Stations s;"; 
     SqlCommand com = new SqlCommand(sqlString, con); 
     SqlDataReader rdr = com.ExecuteReader(); 
     Station s; 

     LinkedList<Station> st=new LinkedList<Station>(); 

     while (rdr.Read()) 
     { 
      int id = (Int32)rdr[0]; 
      string name = (string)rdr[1]; 

      s = new Station(name, id); 
      st.AddLast(s); 
     } 

     con.Close(); 
     return st; 
} 
+1

***其中***在你的代碼,你得到的是例外?並且還請提供您獲得的**完整且準確的**錯誤信息! –

+0

用'試穿catch'塊環繞你的代碼('嘗試{/ *你的代碼* /}趕上(例外){}'),看看會'ex.InnerException'而調試的對象。 – Bharadwaj

+0

Put rdr.Close();在con.Close()之前;這可能是問題 –

回答

1

刪除逗號:

string sqlString = "Select s.Id, s.Name, from Stations s;"; 

它應該閱讀:

string sqlString = "Select s.Id, s.Name from Stations s;"; 

在一個側面說明,你的代碼是不是真的最佳的,因爲它會留下許多資源,直到垃圾收集後應該手動關閉。你可能會想你的代碼改成這樣:

public LinkedList<Station> getAllStation() 
{ 
    string conString = "..."; 
    LinkedList<Station> st = new LinkedList<Station>(); 

    using (SqlConnection con = new SqlConnection(conString)) 
    { 
     con.Open(); 

     using (SqlCommand com = new SqlCommand("Select s.Id, s.Name, from Stations s;", con)) 
     using (SqlDataReader rdr = com.ExecuteReader()) 
     { 
      while (rdr.Read()) 
      { 
       int id = (Int32)rdr[0]; 
       string name = (string)rdr[1]; 

       st.Add(new Station(name, id)); 
      } 
     } 
    } 
    return st; 
} 

此外,而不是硬編碼的連接字符串,像你這樣,我會建議使用SqlConnectionStringBuilder類,以確保您始終獲得有效的連接字符串。

相關問題