Как вставить объект списка в sqlite? - PullRequest
1 голос
/ 28 октября 2019

Это мой класс, который помогает мне десериализовать JSON получить результат от API

public class STOCKS
    {
        public class RootObject  
        {

            [PrimaryKey] 

            public int sto_RECno { get; set; }
            public int sto_RECid_RECno { get; set; 
         }

      }

, и это моя операция десериализации JSON.

var content = await _client.GetStringAsync("http://webapi/somewhere/");
var StockLIST= JsonConvert.DeserializeObject<List<STOCKS.RootObject>>(content);

, и я хочу вставить эти данныена мой sqlite

 conn = DependencyService.Get<ISQLite>().GetConnection(); 
                    conn.CreateTable<STOCKS.RootObject>();
 conn.Insert(StockLIST);

но это не удается.

Я не понимаю, где я не прав.? Мой класс Акции содержит почти 90 переменных. поэтому я ищу подходящее решение, чтобы сделать это.

Должен ли я преобразовать список в таблицу данных или что?

спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Прежде всего, вы можете использовать следующий способ для вставки вашего объекта в базу данных.

  List<Note> StockLIST = new List<Note>();
        StockLIST.Add(new Note() {Text="bbbb",Gender="fame",Date= DateTime.UtcNow });
        StockLIST.Add(new Note() { Text = "bbbb1", Gender = "fame", Date = DateTime.UtcNow });
        StockLIST.Add(new Note() { Text = "bbbb2", Gender = "fame", Date = DateTime.UtcNow });
        StockLIST.Add(new Note() { Text = "bbbb3", Gender = "fame", Date = DateTime.UtcNow });

        foreach (var item in StockLIST)
        {
            await App.Database.SaveNoteAsync(item);
        }

Вы должны использовать async/await при вставке данных в базу данных. Вот код о достижении SaveNoteAsync

    public Task<int> SaveNoteAsync(Note note)
    {
        if (note.ID != 0)
        {
            return _database.UpdateAsync(note);
        }
        else
        {
            return _database.InsertAsync(note);
        }
    }

Когда мы должны выполнить sqlite в xamarin, мы сначала подключимся к базе данных в App.xaml.

  public partial class App : Application
{
    static NoteDatabase database;

    public static NoteDatabase Database
    {
        get
        {
            if (database == null)
            {
                database = new NoteDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Notes5.db3"));
            }
            return database;
        }
    }
}

Здесьскриншот.

enter image description here

Вот мое демо (достижение CURD). Вы можете сослаться на него

https://github.com/851265601/MyNewDataBase

1 голос
/ 28 октября 2019

Я не парень SQLite, но при условии, что conn.Insert (...) работает для одного элемента, тогда вам просто нужно перебрать каждый элемент в списке и вставить его:

foreach (var StockItem in StockLIST)
{
    conn.Insert(StockItem);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...