2013-06-05 75 views
1

我試着去讀取.SQL文件的SQL語句在資源文件夾, 我有2個.SQL文件,現在它讀取一個正確,另一個回報NullRefrenceExceptionStreamReader的空引用異常

這裏是我的呼喚在SQL文件:

string sqlFailRecordNoMatch = EmbeddedResource.GetString("Resources.SQLScripts.RecordNumberFailQuery.sql"); 

這裏是GetString方法:

public static string GetString(System.Reflection.Assembly assembly, string name) 
{ 
    System.IO.StreamReader sr = EmbeddedResource.GetStream(assembly, name); 
    string data = sr.ReadToEnd(); 
    sr.Close(); 
    return data; 
} 
+0

在第二.SQL文件訪問您的代碼中這條SQL語句已經在調試通過加強檢查和'data'的價值?我的猜測是,由於某種原因它是空的。 –

+0

如果一個人能夠正確讀取,那麼讀取它並不是問題,但更有可能找到該文件。 –

+0

你是否顯示了GetString的不同重載?上面的代碼將一個程序集作爲第一個參數,但只調用一個只有字符串參數的GetString – Steve

回答

2

唯一的原因,你會得到一個NullReferenceException上一個主場迎戰另一個是:

  1. 一個最失敗的未設置爲Embedded Resource。您可以通過點擊Solution Explorer中的文件並點擊F4來檢查。
  2. 您正在使用錯誤的完全限定路徑。

我懷疑它是#1。

+0

謝謝!這是第一個。這樣一個簡單的錯誤,它會花費我很多年才能找到。 – Steve2056726

+0

@ user2056726,不用擔心朋友。我只知道這是因爲我自己做的! –

0

這將是容易得多,如果你只是使用從Visual Studio資源編輯器:

  • 在你的項目中創建一個新的文件夾(也可以叫做查詢
  • 右鍵單擊該文件夾,然後選擇添加 - 新建項目
  • 在對話框中只選擇Textfile,並給它什麼這個查詢會做
    • 名稱確保您替換文件擴展名˚F ROM .txt.sql
  • 只要把你的陳述權到該文件
  • 資源編輯器中添加此文件作爲資源(通常位於項目屬性下的文件夾或乾脆也被添加創建 - 新項目 - 資源文件)
  • 現在你可以通過使用Properties.Resources.MySqlStatement