我正在创建一个Xamarin.Forms
应用程序,该应用程序将使用我在C#中创建的API Rest中的数据。
我想做的是将从JSON
返回的所有API
数据存储到本地SQLite
DB,然后在所有应用程序接口中使用该数据。
到这里一切都很好:
public async void GetProduct()
{
var httpClient = new HttpClient();
var response = await httpClient.GetStringAsync("localhost/api/products");
var product = JsonConvert.DeserializeObject<List<Product>>(response);
lvProducts.ItemsSource = propriedade;
}
我想在本地数据库中填充一个表,而不是填充一个ListView
。
您是否可以使用一些简单的可实现代码来实现此目标?
如果您只想存储数据并显示它(如您的帖子所暗示),那么您应该只使用monkey-cache来完成繁重的工作。它是专门为解决该问题而设计的。
否则,您需要查看实现本地数据访问和编写自己的数据访问代码的过程。 This link将帮助您开始。
我想要的是在本地数据库中填充一个表,而不是填充ListView。
根据您的描述,您已经获得了使用Api的列表,现在您要创建本地sqlite表并在此表中填充此列表。
首先,您需要通过Nuget软件包安装sqlite-net-pcl。
然后使用以下代码创建一个sqlite数据库和产品表:
public void createtable()
{
var fileName = "Productdata.db3";
var documentPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var path = Path.Combine(documentPath, fileName);
connection = new SQLiteConnection(path);
connection.CreateTable<Product>();
}
最后,foreach列出数据并在Sqlite产品表中插入数据。
private void Btn4_Clicked(object sender, EventArgs e)
{
var products = JsonConvert.DeserializeObject<List<Product>>(response);
foreach(Product p in products)
{
Product prod = new Product();
prod.productname = p.productname;
var data = connection.Table<Product>();
var d1 = data.Where(x => x.productname == prod.productname).FirstOrDefault();
if (d1 == null)
{
connection.Insert(prod);
Console.WriteLine("Sucessfully Added");
}
else
{
Console.WriteLine("Already Mail id Exist");
}
}
}
这里是产品类别:
public class Product
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string productname { get; set; }
}
这里是有关在本地sqlite数据库中插入数据的文章,您可以看一下:
https://www.c-sharpcorner.com/article/working-with-sqlite-in-xamarine-forms-application/