【发布时间】:2021-04-21 06:20:57
【问题描述】:
我想在我的 Xamarin 应用程序的 SQLite 数据库中存储和检索数组。我正在关注这个Xamarin Tutorial on SQLite。
这些值随后将显示在 Picker 中。我之前使用模型来存储数组,然后获取值并将其列出在 Picker 中,它工作正常,但唯一的问题是它没有永久存储(通过关闭应用程序数组列表变空)。
银行
using SQLite;
namespace Mobile.App
{
public class Banks
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
public string Number { get; set; }
}
}
Database.cs
public class Database
{
readonly SQLiteAsyncConnection _database;
public Database(string dbPath)
{
_database = new SQLiteAsyncConnection(dbPath);
_database.CreateTableAsync<SQLiteBank>().Wait();
}
public Task<List<Banks>> GetBanksAsync(string name)
{
return _database.Table<Banks>().ToListAsync();
}
public Task<int> SaveBanksAsync(Banks bank)
{
return _database.InsertAsync(bank);
}
}
ViewModel.cs
在数据库中存储和检索数组列表。尝试将数组保存到数据库中时,出现错误:
无法将类型'string[]'隐式转换为'string'
尝试从数据库中检索数组时,出现错误:
无法从“System.Collections.Generic.List
”转换为“字符串”
// Array of Bank Name and Number
string[] Name = new string[] { "Bank 1", "Bank 2", "Bank 3" };
string[] Number = new string[] { "000000", "111111", "222222" };
// Save it in database
await App.Database.SaveBanksAsync(new Banks
{
Name = Name, // Cannot implicity convert typer 'string[]' to 'string'
Number = Number // // Cannot implicity convert typer 'string[]' to 'string'
});
var bankName = await App.Database.GetBanksAsync(Name);
_bankList.Add(bankName); // Cannot convert from 'System.Collections.Generic.List<Mobile.App.Banks>' to 'string'
然后在Picker
中获取值private ObservableCollection<string> _bankList = new ObservableCollection<string>();
public ObservableCollection<string> BankList
{
get
{
return _bankList;
}
set
{
this.RaiseAndSetIfChanged(ref _bankList, value);
}
}
<Picker
x:Name="picker_bank"
Title="Select Bank"
ItemsSource="{Binding BankList}"
SelectedItem="{Binding SelectedBank}">
</Picker>
【问题讨论】:
-
什么是
BankModel? -
BankModel是模型,
public static string[] Name { get; set; }..我也可以直接用初始化数组... -
我编辑了它,把它改成了
string[] Name和string[] Number...
标签: c# .net sqlite xamarin xamarin.forms