2013-06-05 7 views
1

Im пытаясь прочитать SQL заявление .SQL файлов в папке ресурсов, У меня есть 2 .SQL файлы прямо сейчас, и он читает один правильно и другие возвращает NullRefrenceExceptionStreamReader Null Reference Исключение

Вот мое призвание из 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 вы шагнули в отладке и проверили значение 'data'? Я предполагаю, что по какой-то причине он является нулевым. –

+0

Ну, если вы читаете правильно, это не проблема с кодом, чтобы прочитать его, но, скорее всего, найти файл. –

+0

Вы показываете другую перегрузку GetString? Один из них берет сборку как первый параметр, но вы вызываете GetString только с строковым параметром – Steve

ответ

2

Единственная причина, вы получите NullReferenceException на один против другой:

  1. Тот, который терпит неудачу не установлен как Embedded Resource. Вы можете проверить это, нажав на файл в Solution Explorer и нажав F4.
  2. Вы используете неправильный полный путь.

Я подозреваю, что это # ​​1.

+0

Спасибо! Это был первый. Такая простая ошибка, мне потребовалось бы времени, чтобы найти это. – Steve2056726

+0

@ пользователь2056726, без беспокойства друг. Я знаю только это, потому что я сделал это сам! –

0

Было бы намного проще, если вы просто использовать редактор ресурсов из Visual Studio:

  • В своем проекте создать новую папку (возможно, называется запросов)
  • Щелкните правой кнопкой мыши эту папку и выберите Добавить - Новый элемент
  • В диалоговом окне просто выберите Textfile и дать ему имя о том, что этот запрос будет делать
    • Убедитесь, что вы заменить расширение файла п ром .txt к .sql
  • Просто поместите ваше заявление прямо в этот файл
  • В редакторе ресурсов добавьте этот файл в качестве ресурса (обычно расположенного в проекте под свойством папки или просто также создать его Add - New Предмет - Ресурсы файл)
  • Теперь вы можете получить доступ к этой SQL Statement в пределах кода только с помощью Properties.Resources.MySqlStatement
Смежные вопросы