2016-08-11 2 views
0

Je suis un codeur ObjectiveC, essayant d'écrire une application Windows 10, Je me suis bloqué en essayant d'interroger une base de données existante, pour commencer j'ai juste besoin de tirer tous les noms dans la colonne "RM_N" de table "storeNames" de dB "fieldnames.sql" et peupler le ComboBox, je voudrais utiliser une chaîne de requête parce que je vais passer à une requête plus complexe suivante.C# SQLite erreur de boucle

Je pense que je me trompe quelque part avec la boucle, je reçois le message

« Informations complémentaires: La valeur ne tombe pas dans la plage attendue. »

avec une flèche pointant vers rmNamePick.ItemsSource = noms;

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

À la minute où vous passez 'names' qui est une instance de' 'storeNames' à rmNamePick.ItemsSource': si vous voulez passer la valeur de chaîne réelle, passer dans 'names.RM_N' – stuartd

+0

Merci pour la réponse rapide, j'ai changé rmNamePick.ItemSource = name.RM_N; mais obtenez toujours cette erreur "Une exception de type" System.ArgumentException "s'est produite dans VAPRA.exe mais n'a pas été traitée dans le code utilisateur Informations supplémentaires: La valeur ne se situe pas dans la plage attendue." –

+0

Je remarque également que vous définissez 'rmNamePick.ItemsSource' à chaque itération de la boucle, c'est-à-dire que vous l'écrasez pour chaque nom de magasin: cela ne semble pas correct, vous ne voulez pas ajouter toutes les valeurs à il? – stuartd

Répondre

0

je suis arrivé finalement

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; 


      } 
      }