#sqlite #xamarin.forms
Вопрос:
Я пытаюсь обновить отдельные записи в базе данных sqlite. Я знаю, как вставлять и удалять записи. Я хотел бы обновить отдельную запись аналогично тому, как я удаляю отдельную запись ниже. Для получения записи по идентификатору актива используется инструкция linq. Затем я хотел бы передать свои данные сюда для обновления.
Я также включил, как я вставляю новую запись для справки. У кого-нибудь есть пример, которым они могли бы поделиться?
Удалите существующую запись
using (SQLiteConnection localconn = new SQLiteConnection(App.FilePath))
{
localconn.CreateTable<Road_Inspections>();
localconn.Table<Road_Inspections>().Where(x => x.Unique_ID == unique_ID).Delete();
}
Вставить новую запись
Road_Inspections lri = new Road_Inspections()
{
ID = id,
Road_ID = Road_ID.Text.ToString(),
Asset_ID = Asset_ID.Text.ToString(),
Defect_Type = txtDefectType.Text.ToString(),
Response = txtResponse.Text.ToString(),
Inspection_Date = DateTime.Now,
};
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
{
conn.CreateTable<Road_Inspections>();
int rowsAdded = conn.Insert(lri);
await DisplayAlert("Success", "Inspeciton Saved to Device", "OK");
}
Ответ №1:
Вам нужно основное Key
или Id
в объявлении объекта, чтобы идентифицировать ваш уникальный объект в базе данных, например:
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
Поскольку вы хотите обновить, вам сначала нужно получить исходную запись из базы данных.
А затем вы можете отредактировать и обновить его. Таким образом, вам не нужно удалять его перед вставкой нового.
В форме xamarin для этого можно использовать nuget sqlite-net-pcl.
Пожалуйста, обратитесь к следующему коду:
public Task<int> SaveItemAsync(TodoItem item)
{
if (item.ID != 0)
{
return Database.UpdateAsync(item);
}
else
{
return Database.InsertAsync(item);
}
}
Для получения более подробной информации вы можете проверить: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/data/databases .
И в вышеприведенный документ включен образец, вы можете проверить его здесь:https://docs.microsoft.com/en-us/образцы/xamarin/xamarin-формы-образцы/todo/
Комментарии:
1. Спасибо, что указали мне правильное направление @Jessie Zhang
2. Можете ли вы рассказать мне, как удалить таблицу, используя вышеуказанную структуру. Я могу сделать это так, но предпочел бы использовать вместо этого вышеприведенную методологию:
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath)) { conn.DropTable<AssetRegister>();}