2015-04-22 2 views
0

я создаю таблицу с именем «Task» с четырьмя колоннами, принимая новый классвставить несколько строк в SQLite (Windows Phone 7 и 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; } 

} 

Для вставки одного row..i вслед за этим .. он отлично работает

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 }); 

      }); 

     } 
    } 

.. но в моем требовании .. мне нужно вставить несколько строк за раз. Я пробовал следующее.

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 }); 
      }); 

     } 
    } 

, когда я следовал за этим, никакой ошибки не popped..but только первая строка вставив .. нет знака второй детали строки .. пожалуйста, помогите мне в этом отношении ..

ответ

0

вы пробовали по бег отдельный RunInTransaction для всех вставка. как показано ниже:

 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 }); 
     }); 

это может помочь .. дайте мне знать больше.

+0

Его не работает .... Вы можете elaborate..do у вас есть другие альтернативные идеи –

1

Я думаю, что «Задача» - ваша модель. Попробуйте создать ViewModel, который будет содержать ваши функции для вставки, обновления, удаления в вашей базе данных.

DatabaseViewModel:

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

А потом:

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

Вы могли бы объявить 3 массивов (1 для идентификатора, 1 для FirstName и 1 для LastName) и добавьте Еогеасп в вашем методе.

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

и после

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 }); 
        } 
       }); 
      } 
     } 

Я надеюсь, что это может помочь ...

+0

Можете ли вы предоставить еще немного информации ... Ошибка его выброса в этой конкретной строке. , db.Insert (new Task() {IDs [id-1], FirstNames [id-1], LastNames [id-1], CreationDate = DateTime.Now}); –