2015-04-22 1 views
0

Je crée une table nommée « Tâche » avec quatre colonnes en prenant une nouvelle classeinsérer plusieurs lignes dans SQLite (Windows Phone 7 et 8)

public sealed class Task 
{ 

    [PrimaryKey, AutoIncrement] 
    public int Id { get; set; } 

    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    public DateTime CreationDate { get; set; } 

} 

Pour insérer simple row..i suivi ce .. cela fonctionne parfaitement

private void Insert_Click(object sender, RoutedEventArgs e)  
    { 
     using (var db = new SQLiteConnection(DB_PATH)) 
     { 

      db.RunInTransaction(() => 
      { 
       db.Insert(new Task() { Id = 1, FirstName = "Ken", LastName = d1[2], CreationDate = DateTime.Now }); 

      }); 

     } 
    } 

..mais dans mon exigence ..i dois insérer plusieurs lignes à la fois .. j'ai essayé ce qui suit.

private void Insert_Click(object sender, RoutedEventArgs e) //perfectly working 
    { 
     using (var db = new SQLiteConnection(DB_PATH)) 
     { 

      db.RunInTransaction(() => 
      { 
       db.Insert(new Task() { Id = 1, FirstName = "Ken", LastName = d1[2], CreationDate = DateTime.Now }); 
       db.Insert(new Task() { Id = 2, FirstName = "Justin", LastName = "Bieber", CreationDate = DateTime.Now }); 

       db.Insert(new Task() { Id = 3, FirstName = "king", LastName = "john", CreationDate = DateTime.Now }); 
      }); 

     } 
    } 

quand je suivais cela, aucune erreur ne popped..but première ligne est insérait .. aucun signe de deuxième rangée de détails .. s'il vous plaît aidez-moi à cet égard ..

Répondre

0

Avez-vous essayé par fonctionnant séparément RunInTransaction pour toutes les opérations d'insertion. comme ci-dessous:

 db.RunInTransaction(() => 
     { 
      db.Insert(new Task() { Id = 1, FirstName = "Ken", LastName = d1[2], CreationDate = DateTime.Now }); 
     }); 

     db.RunInTransaction(() => 
     { 
      db.Insert(new Task() { Id = 2, FirstName = "Justin", LastName = "Bieber", CreationDate = DateTime.Now }); 
     }); 

     db.RunInTransaction(() => 
     { 
      db.Insert(new Task() { Id = 3, FirstName = "king", LastName = "john", CreationDate = DateTime.Now }); 
     }); 

cela pourrait aider .. faites le moi savoir plus.

+0

Son ne fonctionne pas .... peut vous elaborate..do u ont d'autres idées alternatives –

1

Je pense que "Tâche" est votre modèle. Essayez d'avoir un ViewModel qui contiendra vos fonctions pour Insert, Update, Delete dans votre DataBase.

DatabaseViewModel:

public void Insert(Task test) 
    { 
     using (var dbConn = new SQLiteConnection(App.DB_PATH)) 
     { 
      dbConn.RunInTransaction(() => 
       { 
        dbConn.Insert(test); 
       }); 
     } 
    } 

Et puis:

private void Insert_Click(object sender, RoutedEventArgs e)  
{ 
    DatabaseViewModel _dbHelper = new DatabaseViewModel(); 
    _dbHelper.Insert(new Task(1, "justin", "Bieber", DateTime.Now); 
    _dbHelper.Insert(new Task(2, "Cristiano" "Ronaldo", DateTime.Now); 
} 
1

Vous pouvez déclarer 3 tableaux (1 pour id, 1 pour 1 pour FirstName et LastName) et ajouter un foreach dans votre méthode.

//Arrays declaration 
int[] IDs = {1, 2, 3}; 
string[] FirstNames = {"Ken", "Justin", "King"}; 
string[] LastNames = {"Barbie", "Bieber", "Kong"}; 

et après

private void Insert_Click(object sender, RoutedEventArgs e)  
     { 
      using (var db = new SQLiteConnection(DB_PATH)) 
      { 
       db.RunInTransaction(() => 
       { 
        foreach(int id in IDs) 
        { 
         db.Insert(new Task() { IDs[id-1], FirstNames[id-1], LastNames[id-1], CreationDate = DateTime.Now }); 
        } 
       }); 
      } 
     } 

J'espère que cela pourrait aider ...

+0

Pouvez-vous fournir quelques infos de plus ... Son erreur de lancer sur cette ligne en particulier. . db.Insert (nouvelle tâche() {IDs [id-1], FirstNames [id-1], noms de famille [id-1], CreationDate = DateTime.Now}); –