2016-08-11 2 views
0

Я кодер ObjectiveC, пытающийся написать приложение Windows 10, Я застрял в попытке запросить существующую базу данных, чтобы начать работу Мне просто нужно вытащить все имена в столбце «RM_N» из table "storeNames" из dB "fieldnames.sql" и заполнить ComboBox, я хотел бы использовать строку Query, потому что я буду переходить к более сложному запросу.C# Ошибка цикла SQLite

Я думаю, что я неправильно где-то с петлей, я получаю сообщение

«Дополнительная информация: Значение не попадает в ожидаемый диапазон.»

с стрелкой, указывающей на rmNamePick.ItemsSource = имена;

private class storeNames 
     { 
      public string RM_N { get; set; } 
     } 

     private void loadRMnames() 
     { 
      string fileName = "fieldnames.sql"; 
      string _path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, fileName); 

      if (_path != null) 
      { 
       using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), _path)) 
       { 
        var regionNames = conn.Query<storeNames>(@"SELECT RM_N FROM storeNames;"); 
        foreach (var names in regionNames) 
        { 
         if (names == null) 
         { 
          rmNamePick.ItemsSource = @"No Data"; 
         } 
         else 
         { 
          rmNamePick.Items.Clear(); 
          rmNamePick.ItemsSource = names; 
         } 
        } 
       } 
      } 
     } 
+0

На минуту вы передаете 'names' который является экземпляром' 'storeNames' к rmNamePick.ItemsSource': если вы хотите, чтобы передать фактическое строковое значение, передать в 'names.RM_N' – stuartd

+0

Спасибо за быстрый ответ, я изменил rmNamePick.ItemSource = name.RM_N; но все равно получите эту ошибку «Исключение типа« System.ArgumentException »произошло в VAPRA.exe, но не было обработано в коде пользователя Дополнительная информация: Значение не входит в ожидаемый диапазон». –

+0

Я также замечаю, что вы устанавливаете 'rmNamePick.ItemsSource' на каждой итерации цикла, т. Е. Вы переписываете его для каждого storeName: это выглядит неправильно, не хотите ли вы добавить _all_ значения в Это? – stuartd

ответ

0

Я получил там в конце концов

private void loadRMnames() 
     { 

      List<string> namesArray = new List<string>(); 
      string fileName = "fieldnames.sql"; 
      string _path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, fileName); 


       using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), _path)) 
       { 
        var regionNames = conn.Query<storeNames>(@"SELECT RM_N FROM storeNames;"); 
       foreach (var names in regionNames) 
       { 
        namesArray.Add(names.RM_N); 

       } 


       rmNamePick.Items.Clear(); 
       rmNamePick.ItemsSource = namesArray; 


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