2015-01-30 2 views
0

Использование Prism 5 (если это имеет значение), я пытаюсь прочитать таблицу в классе, но когда я запускаю программу, SQLiteDataReader Read() никогда не выполняется (или так я думаю, Точка останова никогда не попадает).DataReader никогда не входит в Read()

В своем решении я есть ModuleA с классом ViewModel с методом, который будет обновлять привязок в представлении:

public void ShowGeneral() 
    { 
     Personnel personnel = new Personnel(); 
     personnel = PersonnelDAL.GetPersonnelRecord(Human); 
     pName = personnel.PersonName + " Esquire"; 
     pAge = personnel.PersonAge; 
    } 

PersonnelDAL.GetPersonnelRecord() находится в отдельном модуле. (Этот модуль имеет ссылки на SQLite).

public static Personnel GetPersonnelRecord(int id) 
    { 
     SQLiteConnection myDBconnection = new SQLiteConnection(SQLiteDAL.dbConnectionString); 
     Personnel personnel = new Personnel(); 

     try 
     { 
      myDBconnection.Open(); 
      string strQuery = "SELECT Person.*, Personnel.*," + 
       " FROM Person, Personnel WHERE Person.PersonPersonnelID = Personnel.PersonnelID AND Person.PersonID = @PersonID"; 
      SQLiteCommand query = new SQLiteCommand(strQuery, myDBconnection); 
      query.Parameters.Add(new SQLiteParameter("@PersonID") { Value = id }); 
      // A Breakpoint set here is hit 
      SQLiteDataReader myReader = query.ExecuteReader(); 

      // A Breakpoint set here is never hit 
      while (myReader.Read()) 
      { 
       personnel.PersonID = myReader.GetInt32(0); 
       personnel.PersonName = myReader.GetInt32(1); 
       personnel.PersonAge = myReader.GetInt32(3); 

       // etc 

В результате View не отображает значение для Age и только Esquire для имени.

Почему myreader.Read() никогда не выполнялся?

+0

К сожалению, лучшим описанием макета является: модуль DataLayer с классом PersonnelDAL с GetPersonnelRecord(). Предполагается, что PersonnelDAL возвращает объект Personnel. –

+0

Вы глотаете исключения? Не делай этого. У вас есть дополнительная запятая в вашем sql перед FROM. Это бросит. – LarsTech

+0

'Отладка на самом деле работает Wonders', попытайтесь использовать его ... – MethodMan

ответ

1

Ваш запрос имеет плохую запятую перед ЕКОМ:

string strQuery = "SELECT Person.*, Personnel.*," + 
      " FROM Person, Personnel WHERE ..."; 

Вы не отправляли весь фрагмент кода, но я предполагаю, что вы глотание исключения. Я бы этого не сделал.

+0

Ларс, спасибо. Да, у меня были некоторые другие операторы select в Query, следовательно, запятая, но похоже, что в этом проблема. Я думал, что что-то ломается из-за чего-то, чего мне не хватало, перейдя к Призме и MVVM. RE исключения Я улавливаю SQLiteException, но имел сообщение MessageBox.Show, так как я не могу теперь использовать его в Prism? –

Смежные вопросы