2015-10-05 170 views
-2

我當前正在爲Visual Studio,C#Windows Form中的項目工作。雖然我的命令有一天在運行,但另一個沒有。現在我完成了我的項目,試圖測試新的東西,它一起崩潰。更具體地說,應用程序的結構:我創建了一個主窗體,它具有所有其餘窗體繼承的基本特徵(如菜單e.t.c)。 start_form僅提供連接到MySqlDatabase的登錄和註冊。爲了向我的應用程序添加授權,我創建了一個名爲「authorization.txt」的文件,其中存儲了用戶按下sign_in按鈕時用戶的ID。此代碼工作完全untilt它開始拋出異常,並阻止我看到了繼承的形式設計預覽說:Visual Studio 2013 C#'FileNotFoundException'

類型「System.IO.FileNotFoundException」 未處理的異常出現在mscorlib.dll

附加信息:找不到文件 'C:\ Users \ leo \ Desktop \ VirtualMuseum_App \ VirtualMuseum_App \ authorization.txt'。

第一種形式(又名登錄註冊表單)工作正常,但是一分鐘後它試圖加載下一個表單(又名主博物館)它崩潰,拋出上面的異常。我給你的主要博物館形式代碼(構造函數)如下:

public Main_Museum() 
{ 
    InitializeComponent(); 
    StreamReader myReader = new StreamReader("C:\\Users\\leo\\Desktop\\VirtualMuseum_App\\VirtualMuseum_App\\authorization.txt"); 
    String line = ""; 
    while (line != null) 
    { 
     line = myReader.ReadLine(); 
     if (line != "") 
     { 
      MessageBox.Show(line); 
      //connection to database 
      string myConnection = "datasource = 127.0.0.1; port = 3306; username = root; password = "; 
      MySqlConnection myConn = new MySqlConnection(myConnection); 
      MySqlCommand SelectCommand = new MySqlCommand("select * from virtual_museum.user where id_user = '" + line + "';", myConn); 

      MySqlDataReader dr; 
      myConn.Open(); 
      dr = SelectCommand.ExecuteReader(); 
      try 
      { 
       while (dr.Read()) 
       { 
        String firstname = dr.GetString("user_firstname"); 
        Profile.Text = "Welcome" + "\n" + firstname; 
        myConn.Close(); 
       } 
      } 
      catch (Exception ex){} 
     } 
    } 
    myReader.Close(); 
} 

任何幫助將深表讚賞。我不知道還有什麼要做。 (注意:在myReader中的整個路徑之前,我已經嘗試過只輸入文件的名稱,但它並沒有起作用,即使它過去也是如此,我不知道爲什麼會產生這樣的混亂。)

謝謝!

+2

使用調試器並檢查它正在尋找文件的文件路徑..你知道如何使用調試器..?而不是使用'dr.GetString'來使用這個'dr [「yourfieldname」]' – MethodMan

+0

@MethodMan,GetString是完全合法的,並且是類型安全的。 ;-) – maxwellb

+0

對不起,但我是新來的Visual Studio。所以,如果你可以指定這些步驟,那將是非常有用的。 –

回答

0

異常告訴您無法找到正在引用的文件。這將在A)構造函數運行時發生,B)在指定路徑上沒有文件。

不知道關於你的申請的更多細節,我不能說在什麼條件下滿足B)。也就是說,你需要確保這個文件存在於指定的位置。

您提到切換到設計視圖時出現此錯誤。這是因爲在設計視圖中加載給定窗體時,構造函數將運行。當應用程序運行時,你確定該文件是否存在,但應用程序關閉時該文件不存在嗎?

在開發應用程序(除了運行應用程序之外)或者移動代碼以將該文件加載到構造函數之外時,請確保文件存在。